算法思想:设置两个指针依次遍历链表A和B,如果A中数据域元素元素小于B中的数据域元素,则释放A中的结点,指向A链表的指针后移,若B中的元素小则释放B中所指结点,如果A中还有剩余则依次释放A中剩余结点,如果B中还有剩余则依次释放B中剩余结点。
LinkList solA(LinkList &A,LikList &B){
LNode *p=B->next,*q=A->next;//定义两个结点分别指向A链表和B链表
A->next=NULL;//A置空
LNode *r=A,*u;//r指向A
while(q!=NUUL&P!=NUUL){
if(q->data<p->data)//如果q元素比较小
u=q;//指向要删除的结点
q=q->next;//q指针往后移
free(u);//删除结点
else if(p->data<q->data)//如果p元素较小
u=p;//指向要删除结点
p=p->next;//p指针后移
free(u);//删除结点
else(p->data==q->data)//如果此时比较元素相等
p=r->next;//尾插法插入A链表中
r=p;//r指向尾结点
r->next=NUUL;//尾指针置空
}
while(p!=NUUL){//如果B中还有剩余依次删除剩余结点
u=p;
p=p->next;
free(u);
}
while(q!=NUUL){//如果A中有剩余依次删除剩余结点
u=q;
q=q->next;
free(u);
}
free(B);//释放B的头结点
return A;//返回链表A
}