相似题在2019/2021重复考察。
算法思想:
①新建C表,比较AB,将大的点头插到C;
②大的点与C中点比较,若相等则删除,遍历下一个;
③若A或者B有剩余,则头插到C。
eg: 74321 654320
供参考
//eg: 74321 654320
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList function(LinkList A,LinkList B){
LinkList p=A->next,q=B->next,s=NULL;
LinkList C=(LinkList)malloc(sizeof(LNode));
C->next=NULL;
while(p&&q){
if(p->data > q->data){
s=p->next;p->next=C->next;C->next=p;p=s;
}
else if(p->data == q->data){
s=p->next;p->next=C->next;C->next=p;p=s;
s=q;
q=q->next;
free(s);
}
else{
s=q->next;q->next=C->next;C->next=q;q=s;
}
}
while(p){
s=p->next;p->next=C->next;C->next=p;p=s;
}
while(q){
s=q->next;q->next=C->next;C->next=q;q=s;
}
return C;
}