brittany•fuleiting 2023-03-01 11:10 采纳率: 40%
浏览 13
已结题

关于#rust#的问题:线性表A和B分别表示两个集合A和B(同集合中的元素值各不相同、无序),用单链表存储

线性表A和B分别表示两个集合A和B(同集合中的元素值各不相同、无序),用单链表存储。现要求另辟空间构成一个线性表C,编写算法求A和B的交集、并集和差集。

  • 写回答

1条回答 默认 最新

  • 张卷地 2023-03-01 13:17
    关注

    交集

    
    def intersection(A, B):
        C = ListNode(None) # 定义一个新的单链表C
        currC = C
        currA = A.next # 遍历A
        while currA:
            currB = B.next # 遍历B
            while currB:
                if currB.val == currA.val: # 找到相同元素
                    currC.next = ListNode(currA.val) # 将该元素加入C中
                    currC = currC.next
                    break
                currB = currB.next
            currA = currA.next
        return C
    
    

    并集

    
    def union(A, B):
        C = ListNode(None) # 定义一个新的单链表C
        currC = C
        currA = A.next # 将A中的元素加入C中
        while currA:
            currC.next = ListNode(currA.val)
            currC = currC.next
            currA = currA.next
        currB = B.next # 遍历B,将B中不在C中的元素加入C中
        while currB:
            currC = C.next
            flag = False
            while currC:
                if currC.val == currB.val:
                    flag = True
                    break
                currC = currC.next
            if not flag:
                currC.next = ListNode(currB.val)
            currB = currB.next
        return C
    
    

    差集

    
    def difference(A, B):
        C = ListNode(None) # 定义一个新的单链表C
        currC = C
        currA = A.next # 将A中的元素加入C中
        while currA:
            currC.next = ListNode(currA.val)
            currC = currC.next
            currA = currA.next
        currB = B.next # 遍历B,将B中在C中的元素删除
        while currB:
            currC = C.next
            prevC = C
            while currC:
                if currC.val == currB.val:
                    prevC.next = currC.next
                    break
                prevC = currC
                currC = currC.next
            currB = currB.next
        return C
    
    

    ```
    `

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月1日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装