注册 登录
编程论坛 数据结构与算法

一道经典题

孤山留影 发布于 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