天天看点

《剑指offer》之合并两个排序的链表(python实现)

问题描述:

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

思路分析:

不断对两个链表当前头指针所指向的元素值进行比较,
小的接入合并链表尾部,头指针后移一位,该元素的next域改为空,直到有一个链表遍历完,
再将有剩余的链表合并到链表尾部即可完成。
           

python语言代码实现如下:

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # write code here
        p = s = ListNode(0)
        while pHead1 != None and pHead2 != None:
            if pHead1.val <= pHead2.val:
                p.next = pHead1
                pHead1 = pHead1.next
            else:
                p.next = pHead2
                pHead2 = pHead2.next
            p = p.next
        if pHead1:
            p.next = pHead1
        elif pHead2:
            p.next = pHead2
        return s.next