L1=L1并B
void Merge(LinkList &L1,LinkList &L2) {
if(!L1->next&&!L2->next) {//两表有一表为空,返回另一表即可
L1=L1->next? L1:L2;
return;
}
LNode *pa=L1,*pb=L2;//两指针分别指向头结点
while(pa->next&&pb->next){
if(pa->next->data<pb->next->data)//pa后继的值小于Pb后继的值,则pa后移
pa=pa->next;
else if(pa->next->data==pb->next->data){//后继值相等,同时后移
pa=pa->next;
pb=pb->next;
}
else if(pa->next->data>pb->next->data&&pa->data==pb->next->data)//pa后继的值大于Pb后继的值,且pa所指向结点的值等于pb后继的值,不作为,以免重复,pa后移
pb=pb->next;
else {//否则将pb的后继作为pa 的后继
LNode *q=pb->next;
pb->next=q->next;
q->next=pa->next;
pa->next=q;
}
}
if(pb->next) {
pa->next=pb->next;
pb->next=NULL;
}
}