1.有两个有序排序的单链表 l1 和 l2,分别存放 10 个数据元素,设计算法实现两个单链表的合并,要求合并后的单链表仍然有序排序,并输出合并结果。
时间: 2023-04-25 11:06:24 浏览: 113
可以采用归并排序的思想,将两个有序链表合并成一个有序链表。
具体实现步骤如下:
1. 定义一个新的链表 head,用于存储合并后的有序链表。
2. 定义两个指针 p1 和 p2,分别指向 l1 和 l2 的头结点。
3. 比较 p1 和 p2 指向的节点的值,将较小的节点插入到 head 链表的尾部,并将指针后移一位。
4. 重复步骤 3,直到 p1 或 p2 指向的节点为空。
5. 将 p1 或 p2 指向的剩余节点插入到 head 链表的尾部。
6. 输出合并后的链表 head。
代码实现如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:
head = ListNode(0)
p = head
p1, p2 = l1, l2
while p1 and p2:
if p1.val < p2.val:
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 head.next
# 测试
l1 = ListNode(1, ListNode(3, ListNode(5, ListNode(7, ListNode(9)))))
l2 = ListNode(2, ListNode(4, ListNode(6, ListNode(8, ListNode(10)))))
result = mergeTwoLists(l1, l2)
while result:
print(result.val, end=' ')
result = result.next
# 输出:1 2 3 4 5 6 7 8 9 10
```
注:以上代码为 Python 语言实现,其他语言实现类似。
阅读全文