将两个递增的有序链表合并成一个递增的有序链表
时间: 2024-10-17 13:05:49 浏览: 40
将两个递增的有序链表合并成一个新的有序链表,可以采用分治法的思想,通常称为归并排序的方式。以下是基本步骤:
1. 创建一个新节点作为结果链表的头,并初始化它为`None`。
2. 比较两个链表当前节点的值,选择较小的那个添加到结果链表并将原链表的指针向后移动一位。
3. 如果其中一个链表已经遍历完,则将另一个链表剩余部分直接添加到结果链表的末尾。
4. 重复上述过程,直到两个链表都处理完毕。
这里是一个简单的Python示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_sorted_lists(l1, l2):
dummy = ListNode(0) # 结果链表头
current = dummy # 当前指针指向dummy
while l1 and l2: # 只要任一链表非空
if l1.val < l2.val:
current.next = l1 # 小于则添加l1节点
l1 = l1.next
else:
current.next = l2 # 否则添加l2节点
l2 = l2.next
current = current.next # 移动current到下一个位置
if l1 is not None: # 如果l1未遍历完,将其余部分追加到结果链表
current.next = l1
elif l2 is not None: # 同理,如果l2未遍历完
current.next = l2
return dummy.next # 返回结果链表头的next,即合并后的有序链表
# 使用示例
l1 = ListNode(1, ListNode(2, ListNode(4)))
l2 = ListNode(1, ListNode(3, ListNode(4)))
merged_list = merge_sorted_lists(l1, l2)
```
阅读全文
相关推荐

















