要设计两个有序单链表的合并排序算法,可以采用迭代的方法来实现。下面是一个示例算法:class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextdef mergeTwoLists(l1, l2): dummy = ListNode(0) current = dummy while l1 and l2: if l1.val < l2.val: current.next = l1 l1 = l1.next else: current.next = l2 l2 = l2.next current = current.next if l1: current.next = l1 if l2: current.next = l2 return dummy.next
在这个算法中,我们使用了一个虚拟节点 dummy 和一个当前指针 current 来构建新的有序链表。然后我们依次比较两个链表的节点值,将较小的节点添加到新链表中,并将指针向后移动。
最后,如果其中一个链表遍历完了,我们将另一个链表剩余的部分直接添加到新链表的末尾。
您可以调用这个函数来合并两个有序单链表,如下所示:# 创建链表1l1 = ListNode(1)l1.next = ListNode(3)l1.next.next = ListNode(5)# 创建链表2l2 = ListNode(2)l2.next = ListNode(4)l2.next.next = ListNode(6)# 合并排序merged = mergeTwoLists(l1, l2)# 打印合并后的链表while merged: print(merged.val) merged = merged.next
这将输出合并后的有序链表的节点值。
希望对您有帮助!如果您有更多问题,请随时提问。 |