用代码实现将两个有序顺序表合并成一个递减序表
时间: 2024-09-29 18:12:57 浏览: 29
为了将两个已排序的升序链表合并成一个降序链表,我们可以创建一个新的链表头节点,并遍历这两个输入链表。每次比较两个链表当前节点的值,选择较大的那个添加到新链表中,并将选中的节点移动到下一个位置。如果其中一个链表结束,我们就将另一个链表剩余的部分直接添加到结果链表的尾部。
这是一个简单的Python示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_sorted_lists(l1, l2):
# 创建新链表头节点
head = ListNode(0)
current = head
while l1 is not None and l2 is not None:
if l1.val > l2.val: # 如果l1更大,添加到新链表
current.next = l1
l1 = l1.next
else: # 否则,l2更大
current.next = l2
l2 = l2.next
current = current.next # 移动到新添加节点之后
# 将未遍历完的链表连接至新链表尾部
if l1 is not None:
current.next = l1
elif l2 is not None:
current.next = l2
return head.next # 返回降序链表的第一个元素
# 示例链表
l1 = ListNode(4, ListNode(2))
l2 = ListNode(1, ListNode(3))
# 合并并打印结果
merged_list = merge_sorted_lists(l1, l2)
while merged_list is not None:
print(merged_list.val, end=" -> ")
merged_list = merged_list.next
```
阅读全文