python代码合并链表
时间: 2024-07-17 12:00:55 浏览: 86
在Python中,合并两个已排序的链表(即每个节点包含整数)通常可以通过迭代或递归的方式实现。这里是一个简单的迭代方法:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_sorted_lists(l1, l2):
dummy_node = ListNode(0) # 创建虚拟头节点
current = dummy_node # 当前节点指向虚拟头
while l1 and l2: # 只要两个链表都有元素
if l1.val < l2.val: # 如果l1的元素小
current.next = l1 # 将l1的元素添加到结果链表
l1 = l1.next # 移动l1到下一个元素
else: # 否则,l2的元素小或相等
current.next = l2 # 将l2的元素添加到结果链表
l2 = l2.next # 移动l2到下一个元素
current = current.next # 移动current到下一个位置,无论刚才添加的是哪个链表的节点
# 处理可能剩下的其中一个链表,如果还有剩余,则直接添加
if l1:
current.next = l1
elif l2:
current.next = l2
return dummy_node.next # 返回新的链表头节点
# 示例用法
l1 = ListNode(1, ListNode(2, ListNode(4)))
l2 = ListNode(1, ListNode(3, ListNode(4)))
merged_list = merge_sorted_lists(l1, l2)
while merged_list:
print(merged_list.val, end=" -> ")
merged_list = merged_list.next
```
这个代码首先创建了一个虚拟头节点,然后通过比较当前节点的值将较小的节点添加到结果链表中,并移动指针。最后返回新链表的头节点。
阅读全文