整体的思路是,先创建一个新的链表,然后判断两个链表节点的value,并向下移动一个位置,直到有一个链表为空,直接将指针指向另一个不为空的链表即可。
详细步骤:
由于最后要求返回一个链表,在开始之前要定义一个空链表,并用两个指针进行指向(一个用于最后的输出,因为输出是从头结点开始向后输出;另一个用于过程链接)
对于两个链表,均已经指向头结点。
两个节点都不为空时,将新链表的next指向最小的节点,并将节点后移动,最重要的一点,一定要把head移动到next位置才能指向下一个,也就是head=head.next,否则链表是不会向前走的。直接就head.next.next 是完全错误的!
然后输出的时候,用另一个一直在头结点的指针进行输出
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
pre=head=ListNode()
# 首先指向两个链表的头结点
# 两个链表均不为空
while l1 and l2:
if l1.val<=l2.val:
head.next=l1
l1=l1.next
else:
head.next=l2
l2=l2.next
head=head.next
# 只能有一个链表为空,直接将链表指向剩余链表即可
head.next=l1 if l1 else l2
return pre.next