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

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

交集


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

```
`