题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
代码实现
# -*- 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
if pHead1==None:
return pHead2
if pHead2==None:
return pHead1
pHead3=ListNode(0) #头结点,值为0
tmp=pHead3 #tmp临时指针,pHead3新链表得头指针
while pHead1 and pHead2:
if pHead1.val<=pHead2.val:
tmp.next=ListNode(pHead1.val)
pHead1=pHead1.next
else:
tmp.next=ListNode(pHead2.val)
pHead2=pHead2.next
tmp=tmp.next #tmp变成新的节点(新赋值的节点)
if pHead1: #PHead1不空,pHead2空,直接加入pHead1中剩余元素
tmp.next=pHead1
if pHead2: #pHead1空,pHead2不空,直接加入pHead2中剩余元素
tmp.next=pHead2
return pHead3.next #返回头结点之后的元素
思路
首先判断两个链表是否为空,若一个为空,则返回另一个。
逐个对比两个链表中的元素,小的节点先插到新的链表中,直到两个链表中的某个链表元素全部插完,另一个链表剩下的元素直接加入新链表得尾部。