【问题】
现有两个单链表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)*/
}