7-1 两个有序链表序列的合并 python
时间: 2024-09-11 14:14:24 浏览: 81
在Python中,合并两个有序链表序列是一个常见的编程任务。这通常可以通过定义一个新链表,并逐一比较两个链表的节点值来实现。以下是一个简单的示例代码,展示如何合并两个有序链表:
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def merge_two_lists(l1, l2):
# 创建一个虚拟头节点,以便于处理边界情况
dummy = ListNode()
current = dummy
# 当两个链表都不为空时,进行比较并链接节点
while l1 and l2:
if l1.value < l2.value:
current.next = l1
l1 = l1.next
else:
current.next = l2
l2 = l2.next
current = current.next
# 当一个链表为空时,直接将另一个链表剩余部分链接到结果链表
current.next = l1 or l2
return dummy.next
# 使用示例
# 假设有两个链表 l1 = [1 -> 2 -> 4] 和 l2 = [1 -> 3 -> 4]
# 合并后的链表应该是 [1 -> 1 -> 2 -> 3 -> 4 -> 4]
```
在这个例子中,`ListNode` 是链表节点的类定义,`merge_two_lists` 函数负责合并两个链表。该函数首先创建了一个虚拟头节点 `dummy`,用于简化边界情况的处理。然后使用一个循环来比较 `l1` 和 `l2` 链表的当前节点值,根据大小顺序链接到结果链表中。如果一个链表被遍历完毕,另一个链表的剩余部分将被直接链接到结果链表的末尾。
阅读全文