链表合并问题(一)

设计将两个递增有序带头结点链表合并为一个有序递减的链表 void MergeList(LinkList & La,LinkList & Lb){ LNode *r,*pa=La->next, *pb=Lb->next; //分别是表La和Lb的工作指针
La->next = NULL; //La作为结果链表的头指针,先将结果链表初始化为空
while(pa&&pb){ //当两链表均不为空时,循环
if(pa->data<=pb->data){ r=pa->next; //r暂存pa的后继结点指针
pa->next=La->next; La->next=pa; //将pa结点链于结果表中,同时逆置
pa=r; //恢复pa为当前待结点
}else{ r=pb->next; //r暂存pb的后继结点指针
pb->next=La->next; //将pb结点链于结果表中,同时逆置
La->next=pb; //恢复pb为当前待结点
pb=r; } if(pa) pa=pb; //通常情况下会剩一个链表非空,处理剩下的部分
while(pb){ //处理剩下的一个非空链表
r=pb->next; 【链表合并问题(一)】//依次插入到La中
pb->next=La->next; La->next=pb; pb=r; } Free(Lb); } }

    推荐阅读