输入单链表A、B求二者的交并集完整代码
时间: 2023-06-17 17:03:55 浏览: 101
以下为求单链表A、B的交集和并集的完整代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def getIntersectionNode(headA: ListNode, headB: ListNode) -> ListNode:
"""
求单链表A、B的交集
"""
if not headA or not headB:
return None
pa, pb = headA, headB
while pa != pb:
pa = pa.next if pa else headB
pb = pb.next if pb else headA
return pa
def getUnionNode(headA: ListNode, headB: ListNode) -> ListNode:
"""
求单链表A、B的并集
"""
if not headA:
return headB
if not headB:
return headA
p = headA
while p.next:
p = p.next
p.next = headB
return headA
# 测试代码
if __name__ == '__main__':
# 构造单链表A: 1->2->3->4->5
A = ListNode(1)
A.next = ListNode(2)
A.next.next = ListNode(3)
A.next.next.next = ListNode(4)
A.next.next.next.next = ListNode(5)
# 构造单链表B: 4->5->6->7->8
B = ListNode(4)
B.next = ListNode(5)
B.next.next = ListNode(6)
B.next.next.next = ListNode(7)
B.next.next.next.next = ListNode(8)
# 求交集
intersection = getIntersectionNode(A, B)
if intersection:
print("单链表A和B的交集为:", intersection.val)
else:
print("单链表A和B没有交集")
# 求并集
union = getUnionNode(A, B)
print("单链表A和B的并集为:")
while union:
print(union.val, end=" ")
union = union.next
```
输出结果为:
```
单链表A和B的交集为: 4
单链表A和B的并集为:
1 2 3 4 5 6 7 8
```
注:上述代码中的 ListNode 类表示单链表的节点,getIntersectionNode 函数用于求单链表A、B的交集,getUnionNode 函数用于求单链表A、B的并集。在测试代码中,我们首先构造单链表A和B,然后分别调用 getIntersectionNode 和 getUnionNode 函数进行求解,最后输出结果。
阅读全文