【正确答案】(1)数据结构
采用单链表的定义。
(2)思路
依次比较即可。但要注意,当两个链表有公共元素后,下次查找时要从公共元素之后开始。
(3)算法
PNode and(PNode a,PNode b){
PNode cur_a,cur_b,cur_c,c;
c=createNullList();
if(c==NULL)
return NULL;
cur_a=a->link;
cur_b=b->link;
cur_c=c;
while(cur_a!=NULL&&cur_b!=NULL){
if(cur_a->info<cur_b->info)
cur_a=cur_a->link;
else if(cur_a->info>cur_b->info)
cur_b=cur_b->link;
else{
cur_c->link=(PNode)malloc(sizeof(struct Node));
if(cur_c->link==NULL)
{
freelist(c);
return NULL;
}
cur_c=cur_c->link;
cur_c->info=cur_a->info;
cur_a=cur_a->link;
cur_b=cur_b->link;
}
}
cur-c->link=NULL;
return c;
}
(4)代价分析
最坏时间代价为O(n+m)。其中,n和m分别是集合A和B中元素的个数。
【答案解析】