剑指offer上面的合成链表题输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

运行结果及报错内容

输入{1,3,5},{2,4,6}
预期输出 {1,2,3,4,5,6}
实际输出 {1,3,4,5,6}

我这代码哪里出了问题导致 2没有插入进去

typedef struct ListNode Node;
Node* Merge(Node* Head1, Node* Head2)

{
    Node *p1;
    Node *p2;
    Node *p3;
    p1=p3=Head1;
    p2=Head2;
    Node *newnode;
    while(p2->next!=NULL)
    {
        p1=Head1;
        newnode=p2->next;
        p2->next=newnode->next; /*将结点删除*/
        
        while(p1->next!=NULL&&newnode->val>p1->next->val)
        {
            
        p1=p1->next;
        }
        
        
        newnode->next=p1->next;
        p1->next=newnode;
        
        
    }
    if(p2->next!=NULL)
    {
        p1->next=p2->next;
        p1->next=NULL;
    }
    
    return p3;
}