Python 链表合并:不修改原链表,输出两个非降序链表的并集
如果你只想输出两个非降序链表的合并结果,并且不能修改原始链表的数据,你可以使用以下方法来实现:
- 遍历两个链表,同时比较节点的值。
- 根据比较结果,将较小值的节点添加到新的结果链表中,并向前移动指针。
- 当其中一个链表的指针到达末尾时,将另一个链表剩余的节点直接添加到结果链表中。
- 返回合并后的结果链表。
下面是一个示例的 Python 代码实现:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def merge_lists(l1, l2):
dummy = ListNode(0) # 创建一个虚拟头结点
curr = dummy # 当前节点指针
while l1 and l2:
if l1.val <= l2.val:
curr.next = ListNode(l1.val)
l1 = l1.next
else:
curr.next = ListNode(l2.val)
l2 = l2.next
curr = curr.next
# 将剩余的节点添加到结果链表中
if l1:
curr.next = l1
if l2:
curr.next = l2
return dummy.next # 返回结果链表的头结点
# 示例输入
l1 = ListNode(1)
l1.next = ListNode(2)
l1.next.next = ListNode(3)
l2 = ListNode(2)
l2.next = ListNode(3)
l2.next.next = ListNode(5)
# 合并链表并打印结果
merged_list = merge_lists(l1, l2)
while merged_list:
print(merged_list.val, end=' ')
merged_list = merged_list.next
# 输出结果:1 2 3 5
请注意,该代码中创建了一个新的结果链表,将两个链表的节点逐个复制到结果链表中。这样就能满足只输出结果而不修改原始链表的要求。
原文地址: https://www.cveoy.top/t/topic/bP2c 著作权归作者所有。请勿转载和采集!