python有两个带附加头结点的单链表,结点包含两个域:entry和next,若单链表中的元素值递增有序排列,请写算法,将两个单链表按顺序合并成一个链表。
时间: 2023-05-30 14:05:39 浏览: 105
算法思路:
1.定义一个新的单链表,用于存储合并后的数据。
2.比较两个单链表的头结点的元素值,将较小的元素值插入到新的单链表中。
3.重复步骤2,直到一个单链表为空,将另一个单链表中剩余的元素插入到新的单链表中。
4.返回新的单链表。
算法实现:
```
class Node:
def __init__(self, entry=None, next=None):
self.entry = entry
self.next = next
def merge_lists(head1, head2):
new_head = Node()
p = new_head
p1 = head1.next
p2 = head2.next
while p1 and p2:
if p1.entry < p2.entry:
p.next = p1
p1 = p1.next
else:
p.next = p2
p2 = p2.next
p = p.next
if p1:
p.next = p1
if p2:
p.next = p2
return new_head
```
测试代码:
```
head1 = Node()
head1.next = Node(1, Node(3, Node(5)))
head2 = Node()
head2.next = Node(2, Node(4, Node(6)))
new_head = merge_lists(head1, head2)
p = new_head.next
while p:
print(p.entry)
p = p.next
```
测试结果:
```
1
2
3
4
5
6
```
阅读全文