首页 > 编程知识 正文

将两个有序链表合并python

时间:2023-11-20 12:16:47 阅读:287992 作者:ETCQ

有时候,我们需要将两个有序链表合并成一个有序链表。这时候,可以使用python进行简单的操作。

一、创建有序链表

在python中,我们可以用一个类来创建一个有序链表。首先,我们需要定义这个链表节点的类:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

然后,我们可以使用这个类来创建两个有序链表:

l1 = ListNode(1, ListNode(2, ListNode(4)))
l2 = ListNode(1, ListNode(3, ListNode(4)))

二、将两个有序链表合并

接下来,我们需要将这两个有序链表合并成一个有序链表。我们可以使用迭代的方式来实现:

def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:
    dummy = ListNode(0)
    cur = dummy
    
    while l1 and l2:
        if l1.val <= l2.val:
            cur.next = l1
            l1 = l1.next
        else:
            cur.next = l2
            l2 = l2.next
        cur = cur.next
        
    cur.next = l1 or l2
    return dummy.next

我们定义了一个dummy节点来作为新链表的头节点,然后使用cur变量来指向新链表的当前节点。每次我们比较两个链表的头节点的值,将较小的那个节点接到新链表的尾部。最后,我们将剩下的节点全部接到新链表的尾部,返回新链表的头节点。

三、完整代码示例

将以上代码整合起来,我们可以得到以下完整的代码示例:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
        
def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:
    dummy = ListNode(0)
    cur = dummy
    
    while l1 and l2:
        if l1.val <= l2.val:
            cur.next = l1
            l1 = l1.next
        else:
            cur.next = l2
            l2 = l2.next
        cur = cur.next
        
    cur.next = l1 or l2
    return dummy.next

l1 = ListNode(1, ListNode(2, ListNode(4)))
l2 = ListNode(1, ListNode(3, ListNode(4)))

result = mergeTwoLists(l1, l2)

while result:
    print(result.val)
    result = result.next

四、总结

通过以上步骤,我们可以用简单的python代码实现将两个有序链表合并成一个有序链表的功能。这个方法也可以用于其他情况下的链表合并操作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。