17 - 01 - 03 链表逆序合并

来源:互联网 发布:编程软件有哪些 编辑:程序博客网 时间:2024/05/11 17:56

【问题】
现有两个单链表A、B,他们的元素都是递增有序。
编写算法将A、B 归并成一个按元素值递减有序的(允许有相同值)
链表C、要求用A、B、中的原结点形成,不能重新申请新节点。

/*两个单链表的有序合并*/LinkList Merge(LinkList A,LinkList B){    LinkList C;     LNode *p,*q;    p = A->next;  q = B->next;    C = A;    C->next = NULL;    //杜绝野指针    free(B);    //*_*//    while(p && q){        if(p->data < q->data){            s = p; p = p->next;        } else {            s = q; q = q->next;        }  /* if - else */        s->next = C->next;        C->next = s;        }   /* while */        if(p == NULL)  p = q;        while (p)        {            s = p; p = p->next;            s->next = C->next;            C->next = s;        }  /*while(p)*/      }  /*while( p && q)*/}
1 0