总体思想:
1.首先定义一个l3空节点,两个链表当前表头的元素谁小将谁插入到l3后面
2.开始判断两个链表是否有为空的情况。
3.需要注意定义p1、p2链表的后驱元素信息,这里我使用l1、l2代表p1和p2的后驱元素信息,因为将当前最小元素加入到l3链表之后
会出现无法前进的现象,且需要将l3当前元素置空。
4.因为定义了后驱元素,所以在遍历时需要注意,若l1为空时,则不能前进。
5.最后比完了大小可能会出现链表长度不同的情况。

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pHead1 ListNode类 
# @param pHead2 ListNode类 
# @return ListNode类
#
class Solution:
    def Merge(self , pHead1: ListNode, pHead2: ListNode) -> ListNode:
        if pHead1==None:
            return pHead2
        if pHead2==None:
            return pHead1
        test = ListNode(0)
        l3 = test        #定义一个第空节点
        l1 = pHead1.next    #采取谁小谁插入到l3后面的策略,但需要保留下一次的节点信息,所以定义一个l1和l2用于储存节点信息
        l2 = pHead2.next
        while pHead1 and pHead2:
            if pHead1.val<pHead2.val:
                l3.next = pHead1    #将当前小的元素链接到l3节点处
                pHead1.next = None   #将当前链表制空,因为此时pHead1对应的节点为当前l3链表中的最后一个节点
                l3 = l3.next      #l3向后移动,方便下次继续链接当前最小的元素
                pHead1 = l1      #l1为记忆节点,直接将其赋值给pHead1
                if l1!=None:     #害怕出现l1为None的情况,故在不为none时进行后移动
                    l1 = l1.next
            else:                    #同理
                l3.next = pHead2
                pHead2.next= None
                l3 = l3.next
                pHead2 = l2
                if l2!=None:
                    l2 = l2.next
        if pHead1==None:         #若出现有链表长度不同的情况,p1为空,则有可能p2不为空,同理p2为空
            l3.next = pHead2     #p1有可能不为,同理有可能都为空
            return test.next
        if pHead2==None:
            l3.next = pHead1
            return test.next
        else:
            return test.next
            
                
                
        # write code here