编程论坛
注册
登录
编程论坛
→
数据结构与算法
一道经典题
孤山留影
发布于 2010-04-25 17:41, 563 次点击
已知a,b和c三个非递减有血线性表.现要求对a表作如下操作:产出那些记载b表中出现有在c表中出现的元素.是对单链表编写上述操作的算法(注意:题中没有特别指明同一表中的元素之各不相同)
请大家试着编一下
2 回复
#2
2010-04-28 06:38
这是我的算法,麻烦楼主看看哈。
LinkList function_v1.0(LinkList LA,LinkList LB,LinkList LC)
{
LinkList p,q,s;
p=LA;q=LB->next;s=LC->next;
while(q&&s)
{
if(q->data<s->data) q=q->next;
else if(q->data>s->data) s=s->next;
else
{
while(q->data==s->data) s=s->next;
p->next=q;
p=q;
q=q->next;
}
}
p->next=NULL;
return LA;
}
#3
2010-04-28 17:38
void LinkList_Intersect(LinkList A,LinkList B,LinkList &C)
{ p=A->next;q=B->next;
pc=(LNode*)malloc(sizeof(LNode));
while(p&&q) {
if(p->data<q->data) p=p->next;
else if(p->data>q->data) q=q->next;
else {
s=(LNode*)malloc(sizeof(LNode));
s->data=p->data;
pc->next=s;pc=s;
p=p->next;q=q->next;
} }//while
C=pc;}//LinkList_Intersect
表A B 存于表C
1