【问题】
将两个递增有序的单链表设计算法成一个非递减有序的链表
【思路】
从前往后依次比较链表A,B当前元素的值,用指针p和q表示指向的结点。如果A<B,那么将A此时的值存入辅助链表C当中,指向A的指针p向后移;如果B<A,那么将B中的值存入辅助链表C当中,指向B的指针q向后移。直至任意一方到链表尾,将另一方剩余的元素全部放到C链表尾部
int merge(LNode *A,LNode* B,LNode* &C){
LNode* p=A->next;
LNode* q=B->next;
C = A;
C->next = 0;
r = C;
while(p!NULL && q!NULL){
if(p->data <= q->data){
r->next = p;
p = p->next;
r = r->next;
}
else{
r->next = q;
q = q->next;
r = r->next;
}
}
r-next = NULL;
if(p!=NULL) r->next = p;
if(q!=NULL) r->next = q;
}