- 设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。(求并集)
void func1(LinkList a,LinkList b,LinkList &c){
LNode *pc=c;
pc->next = NULL;
for(LNode *pa=a->next;pa!=NULL;pa=pa->next){
for(LNode *pb=b->next;pb!=NULL;pb=pb->next){
if(pa->data==pb->data){
LNode *s = new LNode;
s->data = pa->data;
s->next = pc->next;
pc->next = s;
pc = s;
}
}
}
}
void func2(LinkList a,LinkList b,LinkList &c){
LNode *pc = c;
pc->next = NULL;
for(LNode *pa=a->next;pa!=NULL;pa=pa->next){
LNode *s = new LNode;
s->data = pa->data;
s->next = pc->next;
pc->next = s;
pc = s;
}
for(LNode *pb=b->next;pb!=NULL;pb=pb->next){
LNode *s = new LNode;
s->data = pb->data;
s->next = pc->next;
pc->next = s;
pc = s;
}
for(pc=c->next;pc->next!=NULL;pc=pc->next){
for(LNode *pd=pc->next,*pre=pc;pd!=NULL;pd=pd->next,pre=pre->next){
if(pc->data==pd->data){
LNode *s = pd;
pre->next = pd->next;
pd = pd->next;
free(s);
}
}
}
}