#include
class Node {
friend class LinkList;
int data;
Node *link;
public:
Node(){link=NULL;}
};
class LinkList { //链表
Node *head; //头指针
public:
LinkList( ) { head=new Node(); }
void Create( );
void print();
void Union(LinkList list1,LinkList list2);
void Intersection(LinkList list1,LinkList list2);
};
void LinkList::Create()
{
int flag=0;
Node *p,*s,*q;
p=new Node;
cin>>p->data;
while(p->data!=0)
{
do
{
flag=0;
q=head->link;
while(q) //剔除重复数据
{
if(q->data==p->data)
{
flag=1;
break;
}
else
q=q->link;
}
if(flag==1)
{
cout<
cin>>p->data;
}else if(flag==0)
break;
}while(flag!=0);
if(p->data==0)
break;
p->link=head->link;
head->link=p;
p=new Node;
cin>>p->data;//建立链表
}
}
void LinkList::print()
{
Node *p;
p=head->link;
if(head->link==NULL)
cout<
while(p!=NULL)
{
cout<data<
p=p->link;
}
cout<
}
void LinkList::Union(LinkList list1,LinkList list2)
{
Node *p;
Node *s;
p=list1.head->link;
while(p!=NULL)
{
s=new Node;
s->data=p->data;
s->link=head->link;
head->link=s;
p=p->link;
}
Node *head2=list2.head;
Node *q=head2->link;
int flag;
while(q!=NULL)
{
flag=0;
p=head->link;
while(p!=NULL)
{
if(p->data==q->data)
{
flag=1;
break;
}
p=p->link;
}
if(flag==0)
{
s=new Node;
s->data=q->data;
s->link=head->link;
head->link=s;
}
q=q->link;
}
}
void LinkList::Intersection(LinkList list1,LinkList list2)
{
Node *head1=list1.head;
Node *head2=list2.head;
Node *q=head2->link;
Node *p;
Node *s;
int flag;
while(q!=NULL)
{
flag=0;
p=head1->link;
while(p!=NULL)
{
if(p->data==q->data)
{
s=new Node;
s->data=p->data;
s->link=head->link;
head->link=s;
}
p=p->link;
}
q=q->link;
}
}
void main()
{
LinkList list1;
LinkList list