Python中如何合并两个链表(Linked List)
我们可以使用递归的方式将两个链表合并。具体来说,我们比较两个链表的头节点,将值较小的节点作为新链表的头节点,然后递归地将剩余的节点进行合并。
下面是Python代码实现:
# 定义链表节点类 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # 合并两个链表 def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode: # 如果l1为空,返回l2 if not l1: return l2 # 如果l2为空,返回l1 if not l2: return l1 # 如果l1的值小于等于l2的值,将l1的下一个节点和l2合并为新的链表 if l1.val <= l2.val: l1.next = mergeTwoLists(l1.next, l2) return l1 # 否则将l2的下一个节点和l1合并为新的链表 else: l2.next = mergeTwoLists(l1, l2.next) return l2 # 创建两个链表并进行合并 l1 = ListNode(1, ListNode(3, ListNode(5))) l2 = ListNode(2, ListNode(4, ListNode(6))) merged = mergeTwoLists(l1, l2) # 遍历新链表并输出值 while merged: print(merged.val) merged = merged.next
以上代码运行结果为:
1 2 3 4 5 6
我们创建了两个链表l1和l2,并调用mergeTwoLists函数将它们合并为一个新的链表。最后我们遍历新链表并打印每个节点的值,可以看到节点已经按从小到大的顺序排列。
相关文章