两个排序整数的双链表(按升序排列), 编写算法,将它们合并到一个排序整数的链表中
时间: 2024-09-30 16:06:02 浏览: 39
合并两个已排序的整数双链表(即每个节点包含一个整数值,并按照升序顺序链接在一起)可以采用递归或者迭代的方式实现。这里我们给出一种简单的迭代方法:
首先创建一个新的空链表作为结果,然后初始化三个指针,分别指向两个输入链表的头节点以及新链表的头。
1. **遍历过程**:
- 如果两个输入链表都不为空:
a. 比较当前指向的两个链表头的值,选择较小的一个添加到新链表中,并移动该链表头指针。
b. 将另一个链表头向前移动一位,因为已经处理了较小的节点。
- 当其中一个链表为空时,将另一个链表剩余部分接到新链表的末尾。
2. **连接细节**:
- 更新新链表的下一个节点,使其始终指向当前处理完的节点,直到完成整个过程。
以下是伪代码形式的合并算法:
```python
def merge_sorted_lists(list1_head, list2_head):
result = ListNode(0) # 新链表的头节点,初始值设为0方便后续操作
current = result # 当前处理节点
while list1_head and list2_head:
if list1_head.val <= list2_head.val:
current.next = list1_head
list1_head = list1_head.next
else:
current.next = list2_head
list2_head = list2_head.next
current = current.next # 移动到处理后的节点
# 将剩余链表(如果有的话)接到新链表的末尾
if list1_head:
current.next = list1_head
elif list2_head:
current.next = list2_head
return result.next # 返回合并后的新链表头
```
阅读全文