问题
分析
1.先插入,再排序.。插入方法用头插法,由两联表都是递增可知,能比出来相对小的值,再利用头插法,变成递减链表
具体算法实现:
Linklist merge_a_b(LinkList & A,LinkList &b){//要合并两个表,需要将它们都传进来
LNode *pa=A->next,*p;//p是防断链指针
LNode *pb=B->next;
while(pa->next!=NULL && pb!=NULL){//不仅a表不能只有一个元素外为空,b表也不能只有一个元素外就空
if(pa->data<=pb->data){//如果a值比b值小,则取a值头插到a表。
p=pa-next;
pa-next=A-next;
A->next=pa;
pa=p;
}else{//若b值比较小,则头插b值进入a表
p=pb->next;
pb->next=A->next;
A->next=pb;
pb=p;
}
}
if(pb!=NULL){//执行完上面的操作,可能还有一个表剩余有元素,另一个表不剩余元素
pa=pb;
while(pa!=NULL){
p=pa->next;
pa->next=A->next;
A->next=pa;
pa=p;
}
free(B);//合并表只需要a表头结点,不需要b的头结点,释放它
}