#include<iostream>
using namespace std;
struct Node
{
int data;
Node *next;
};
Node * intLinkListLa(int n)
{ Node *head,*r;
head=new Node; //分配空间
head->next=NULL;
r=head;
for(int i=n;i>0;i--) //为链表添加数据
{
Node *s;
s=new Node;
int a;
cin>>a;
s->data=a;
s->next=r->next;
r->next=s;
r=s;
}
return head;
}
void Jiaoji(Node *La, Node *Lb)
{
Node *p, *q,*r;
p=La->next; q=Lb->next; r=La;//将r定义为头指针
while(p)
{
while(q)
{
if(p->data==q->data)
{
r->next=p;
r=p;
break;
}
q=q->next;
}
q=Lb->next; //每次循环后q指针都返回第一个元素的指针域
p=p->next; //p指向下一个元素
}
r->next=NULL;
}
void PrintList(Node *La) //遍历输出
{
Node *p;
p=La->next; //每次搜索都从头指针开始
while(p)
{
cout<<p->data<<"\t";
p=p->next;
}
}
int main()
{
int x,y;
cout<<"请输入集合一的个数"<<endl;
cin>>x;
Node*La=intLinkListLa(x);
cout<<"请输入集合二的个数"<<endl;
cin>>y;
Node*Lb=intLinkListLa(y);
Jiaoji(La, Lb);
PrintList(La);
return 0;
}
《数据结构》实验
实验一 集合的交、并和差运算的实现
实验性质:设计性实验
要求:(1)采用单链表的存储结构;
(2)实现运算时,不另外申请存储空间。(这是实验题目)