题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
# -*- 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 = ListNode(0)
# 定义一个p链表的引用,输出的时候使用
pHead = p
if pHead1 == None and pHead2 == None:
return
while pHead1 and pHead2:
# 比较两个链表的首结点,小的的结点则合并到第三个链表尾结点,并向前移动一个结点。
if pHead1.val <= pHead2.val:
p.next = pHead1
pHead1 = pHead1.next
else:
p.next = pHead2
pHead2 = pHead2.next
# p要往后移动一位,因为当前位存储的是上面if-else语句得到的数
p = p.next
# 自定义的链表指向剩余未遍历结束的链表
if pHead1:
p.next = pHead1
elif pHead2:
p.next = pHead2
# 输出pHead结点的下一个结点,因为第一个结点是自定义的数,不属于链表本身
# 为什么不使用p链表直接输出?
# 因为p当前指向的结点并不是首结点,如果直接输出p的话首结点(创建链表时自定义的结点)也会输出
return pHead.next