单链表整合哪里出错了

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

```c
void unit(linklist A,linklist B,linklist C){
linklist p,q,s;
C->next=NULL;
p=A->next;
q=B->next;
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
s=p->next;
p->next=C->next;
C->next=p;
p=s;
}else{
s=q->next;
q->next=C->next;
C->next=q;
q=s;
}
if(p==NULL){
C->next=p;
}else{
C->next=q;
}
}

img

```将两个递增有序的单链表A、B,归并成一个按元素值递减(允许有相同值)有序的链表C,要求用A、B中的原结点形成,不能重新申请结点

修改如下,供参考:

//将两个递增有序的单链表A、B,归并成一个按元素值递减(允许有相同值)有序的链表C,
//要求用A、B中的原结点形成,不能重新申请结点
void unit(linklist A,linklist B,linklist* C)
{
    linklist pa = NULL, pb = NULL, pt = NULL;
    if (!A || !B || (!A->next && !B->next))
        {(*C) = NULL; return;}
    (*C) = A;
    pa = A->next;
    pb = B->next;
    (*C)->next = NULL;
    while(pa && pb){
        if(pa->data < pb->data){
            pt = pa;
            pa = pa->next;
            pt->next = (*C)->next;
            (*C)->next = pt;
        }
        else{
            pt = pb;
            pb = pb->next;
            pt->next = (*C)->next;
            (*C)->next = pt;
        }
    }
    pb = pa ? pa : pb;
    while (pb){
        pt = pb;
        pb = pb->next;
        pt->next = (*C)->next;
        (*C)->next = pt;
    }
    free(B);
}
int main()
{
    linklist L = NULL, L1 = NULL, L2 = NULL;
    //......
    unit(L, L1, &L2);
    //......
}