给定两个降序排列的链表,设计实现两个链表的降序合并
时间: 2024-11-15 13:10:57 浏览: 0
探讨:将两个链表非降序合并为一个链表并依然有序的实现方法
给定两个已排序的降序单链表,我们要合并它们成一个新的降序链表。这个问题可以递归地解决,首先取两个链表中的最大值作为新链表的头节点,然后对剩下的部分递归执行同样的过程。
以下是Python的一个简单实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1, l2):
# 创建一个新的链表头节点
if not l1:
return l2
elif not l2:
return l1
# 当前节点分别为l1和l2的最大值
elif l1.val >= l2.val:
new_head = ListNode(l1.val)
new_head.next = mergeTwoLists(l1.next, l2)
else:
new_head = ListNode(l2.val)
new_head.next = mergeTwoLists(l1, l2.next)
return new_head
# 示例:
# l1: 9 -> 8 -> 7
# l2: 5 -> 4 -> 3
l1 = ListNode(9, ListNode(8, ListNode(7)))
l2 = ListNode(5, ListNode(4, ListNode(3)))
merged_list = mergeTwoLists(l1, l2)
while merged_list:
print(merged_list.val, end=" -> ")
merged_list = merged_list.next
```
当运行这段代码时,输出将是 `9 -> 8 -> 7 -> 5 -> 4 -> 3`。
阅读全文