线性表实现集合的交并
时间: 2024-06-13 17:07:15 浏览: 11
以下是使用线性表实现集合的交并的Python代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def to_set(self):
s = set()
current_node = self.head
while current_node:
s.add(current_node.data)
current_node = current_node.next
return s
def union(llist1, llist2):
set1 = llist1.to_set()
set2 = llist2.to_set()
return list(set1.union(set2))
def intersection(llist1, llist2):
set1 = llist1.to_set()
set2 = llist2.to_set()
return list(set1.intersection(set2))
def difference(llist1, llist2):
set1 = llist1.to_set()
set2 = llist2.to_set()
return list(set1.difference(set2))
# 测试函数
def test():
llist1 = LinkedList()
llist1.append(1)
llist1.append(2)
llist1.append(3)
llist2 = LinkedList()
llist2.append(2)
llist2.append(3)
llist2.append(4)
assert union(llist1, llist2) == [1, 2, 3, 4]
assert intersection(llist1, llist2) == [2, 3]
assert difference(llist1, llist2) == [1]
test()
```
其中,`LinkedList`类表示一个链表,`Node`类表示链表中的一个节点。`to_set`方法将链表转换为集合。`union`、`intersection`、`difference`分别表示集合的并、交、差运算。