写出以下完整代码 (2) 定义有序表: L1: 6,1221,27,35,38 L2: 8,15,18,23 利用MergeList函数将L1,L2合并到L3中,并遍历L3。 (3) 定义有序表: L1: 1,3,5,10,14 L2: 2,4,8,15,18,24,26,27 利用MergeList函数将L1,L2合并到L3中,并遍历L3。
时间: 2023-05-26 10:02:06 浏览: 45
(2)
```
class Node:
def __init__(self, data):
self.data = data
self.next = None
class OrderedList:
def __init__(self):
self.head = None
def add(self, data): # 添加元素
new_node = Node(data)
if self.head is None:
self.head = new_node
elif data < self.head.data:
new_node.next = self.head
self.head = new_node
else:
current = self.head
while current.next is not None and current.next.data < data:
current = current.next
new_node.next = current.next
current.next = new_node
def merge(self, other_list): # 合并有序列表
new_list = OrderedList()
current1 = self.head
current2 = other_list.head
while current1 is not None and current2 is not None:
if current1.data <= current2.data:
new_list.add(current1.data)
current1 = current1.next
else:
new_list.add(current2.data)
current2 = current2.next
while current1 is not None:
new_list.add(current1.data)
current1 = current1.next
while current2 is not None:
new_list.add(current2.data)
current2 = current2.next
return new_list
def traverse(self): # 遍历链表
current = self.head
while current is not None:
print(current.data, end=' ')
current = current.next
# 创建有序表 L1 和 L2
L1 = OrderedList()
L1.add(6)
L1.add(1221)
L1.add(27)
L1.add(35)
L1.add(38)
L2 = OrderedList()
L2.add(8)
L2.add(15)
L2.add(18)
L2.add(23)
# 合并 L1 和 L2 到 L3
L3 = L1.merge(L2)
L3.traverse() # 遍历 L3
```
输出结果为:6 8 15 18 23 27 35 38 1221
(3)
```
class Node:
def __init__(self, data):
self.data = data
self.next = None
class OrderedList:
def __init__(self):
self.head = None
def add(self, data): # 添加元素
new_node = Node(data)
if self.head is None:
self.head = new_node
elif data < self.head.data:
new_node.next = self.head
self.head = new_node
else:
current = self.head
while current.next is not None and current.next.data < data:
current = current.next
new_node.next = current.next
current.next = new_node
def merge(self, other_list): # 合并有序列表
new_list = OrderedList()
current1 = self.head
current2 = other_list.head
while current1 is not None and current2 is not None:
if current1.data <= current2.data:
new_list.add(current1.data)
current1 = current1.next
else:
new_list.add(current2.data)
current2 = current2.next
while current1 is not None:
new_list.add(current1.data)
current1 = current1.next
while current2 is not None:
new_list.add(current2.data)
current2 = current2.next
return new_list
def traverse(self): # 遍历链表
current = self.head
while current is not None:
print(current.data, end=' ')
current = current.next
# 创建有序表 L1 和 L2
L1 = OrderedList()
L1.add(1)
L1.add(3)
L1.add(5)
L1.add(10)
L1.add(14)
L2 = OrderedList()
L2.add(2)
L2.add(4)
L2.add(8)
L2.add(15)
L2.add(18)
L2.add(24)
L2.add(26)
L2.add(27)
# 合并 L1 和 L2 到 L3
L3 = L1.merge(L2)
L3.traverse() # 遍历 L3
```
输出结果为:1 2 3 4 5 8 10 14 15 18 24 26 27