#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
int Search(LinkList L,int e);
void jiaoji(LinkList Q,LinkList E);
int main()
{
LinkList LA=NULL,LB=NULL,p,q,taila=NULL,tailb=NULL,r;
int i;
printf("请依次输入集合A和集合B中的元素!\n集合A中的元素为:");
for(i=0;i<5;i++){
p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next=NULL;
if(LA==NULL){
LA=p;
taila=p;
}
else{
taila->next=p;
taila=taila->next;
}
}
cout<<"集合B中的元素为:";
for(i=0;i<5;i++){
q=(LinkList)malloc(sizeof(LNode));
cin>>q->data;
q->next=NULL;
if(LB==NULL){
LB=q;
tailb=q;
}
else{
tailb->next=q;
tailb=tailb->next;
}
}
cout<<"交集:";
jiaoji(LA,LB);
while(LB){
if(!Search(LA,LB->data)){
r=(LinkList)malloc(sizeof(LNode));
r->data=LB->data;
r->next=NULL;
taila->next=r;
taila=taila->next;
}
LB=LB->next;
}
cout<<"合并后的集合为:";
while(LA){
cout<<LA->data;
LA=LA->next;
}
printf("\n");
return 0;
}
void jiaoji(LinkList Q,LinkList E)
{
cout<<"交集:";
while(E){
if(Search(Q,E->data)){
cout<<E->data<<" ";
}
E=E->next;
}
cout<<endl;
}
int Search(LinkList L,int e)//判断e是否在L中,若是,返回1;否则返回0.
{
while(L){
if(L->data!=e){
L=L->next;
}
else
break;
}
if(L) return 1;
else return 0;
}