Python中如何合并两个链表(Linked List)

2023-04-11 00:00:00 合并 两个 链表

我们可以使用递归的方式将两个链表合并。具体来说,我们比较两个链表的头节点,将值较小的节点作为新链表的头节点,然后递归地将剩余的节点进行合并。

下面是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函数将它们合并为一个新的链表。最后我们遍历新链表并打印每个节点的值,可以看到节点已经按从小到大的顺序排列。

相关文章