有时候,我们需要将两个有序链表合并成一个有序链表。这时候,可以使用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代码实现将两个有序链表合并成一个有序链表的功能。这个方法也可以用于其他情况下的链表合并操作。