合并两个排序的链表(python)

一,问题

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则

二,分析

先举一个栗子:

有如下两个链表:

我们做一个指针叫top,他指向两个链表中表头较小的那个。之后他就不动了,等着被输出

 

再做两个指针,一个叫up一个叫down,分别指向上链表和下链表

up=pHead1

down=pHead2

top=None

if up.val>down.val:

    top=pHead2

else:

    top=pHead1

 

top的位置确定后,up或者down就要让位给top

 

if top==pHead1:

    up=up.next

else:

    down=down.next

 

 

 然后开始比较up和down的值谁大

这时还需要定义一个操作next指针的操盘手,他叫pre,让pre先指向top

pre=top

然后看up和down谁的值小,就让pre操作next指针指向谁, 然后pre跳过去占他的位置 ,并让他往后跳一个

while up and down:

    if up.val<down.val:

        pre.next=up

        pre=up

        up=up.next

 

 

直到up或者down指向了None,就让先到None的那个链表的最后一个结点指向另一个链表剩余的结点

if up==None:

    pre.next=down

else:

    pre.next=up

 

 

最后,输出top

 

三,代码

 

 

 

posted @ 2020-06-23 18:09  董不耀  阅读(457)  评论(0编辑  收藏  举报