合并单链表 创建两个有序单链表,然后,把这两个有序单链表合并成一个有序单链表。 输入示例 12456 3789 输出示例 123456789
时间: 2024-12-04 17:27:34 浏览: 13
合并两个有序单链表的过程通常通过迭代或递归的方式实现。这里我将描述一种常见的迭代方法:
首先,创建一个新的头节点`newHead`,它将作为合并后的链表的头部。然后设置两个指针,一个指向第一个链表的头部`p1`,另一个指向第二个链表的头部`p2`。
1. 比较两个指针所指的节点值,选择较小的那个节点将其添加到新链表中,并更新当前节点为下一个较小节点。如果其中一个链表结束,直接将另一个链表剩余部分接到新链表的末尾。
2. 如果`p1`和`p2`都未到达链表末尾,继续此过程直到其中一个遍历完。
以下是这个过程的伪代码表示:
```python
def merge_sorted_lists(l1, l2):
newHead = ListNode(0) # 创建新链表的头节点,初始为空
current = newHead # 当前指针
while l1 and l2:
if l1.val < l2.val:
current.next = l1
l1 = l1.next
else:
current.next = l2
l2 = l2.next
current = current.next
# 将剩余的链表连接到新链表末尾(如果存在)
if l1:
current.next = l1
elif l2:
current.next = l2
return newHead.next # 返回新链表的头节点
```
在这个例子中,输入的两个链表分别为12456和3789,经过合并操作后会得到连续的有序序列:123456789。
阅读全文