#includeusing namespace std; #include #define ERROR 0 #define OK 1 typedef int ElemType; using namespace std; typedef struct LNode { ElemType data; struct LNode* next; }LNode,*LinkList; void InitList(LinkList &L) { L=new LNode;//或L=(LinkList)malloc(sizeod(LNode)); L->next=NULL; } void CreateList(LinkList &L,int n)//尾插法 { int i; LinkList p,r; r=L; for(i=1;i<=n;i++) { p=new LNode; cin>>p->data;//scanf(&p->data); p->next=NULL; r->next=p; r=p; } } int LocateList(LinkList L,ElemType e) { LinkList p; p=L->next; while(p&&p->data!=e) p=p->next; if(p)return OK; else return ERROR;//没找到 } void unionset(LinkList L1,LinkList L2,LinkList &La) { int sign; ElemType e; LinkList p,r,s; p=L1->next;r=La; while(p) { e=p->data; sign=LocateList(L2,e); if(sign==0) { s=new LNode; s->data=p->data; r->next=s; r=s; p=p->next; } else p=p->next; } r->next=L2->next; } void Intersection(LinkList L1,LinkList L2,LinkList &Lb) { int sign; ElemType e; LinkList p,r,s; p=L1->next;r=Lb; while(p) { e=p->data; sign=LocateList(L2,e); if(sign==1) { s=new LNode; s->data=p->data; r->next=s; r=s; p=p->next; } else p=p->next; } r->next=NULL; } void Except(LinkList L1,LinkList L2,LinkList &Lc) { int sign; ElemType e; LinkList p,r,s; p=L1->next;r=Lc; while(p) { e=p->data; sign=LocateList(L2,e); if(sign==0) { s=new LNode; s->data=p->data; r->next=s; r=s; p=p->next; } else p=p->next; } r->next=NULL; } void PrintList(LinkList L) { LinkList p; p=L->next; while(p){ cout< data<<" "; p=p->next; } } int main() { int m,n; LinkList L1,L2,La,Lb,Lc,Ld; InitList(L1); InitList(L2); InitList(La); InitList(Lb); InitList(Lc); InitList(Ld); cout<<"集合A有几个元素:"; cin>>m; cout<<"请依次输入集合A元素:"; CreateList(L1,m); cout<<"集合B有几个元素:"; cin>>n; cout<<"请依次输入集合B元素:"; CreateList(L2,n); unionset(L1,L2,La); cout<<"A∪B:"; PrintList(La); Intersection(L1,L2,Lb); cout<<'n'<<"A∩B:"; PrintList(Lb); Except(L1,L2,Lc); cout<<'n'<<"A-B:"; PrintList(Lc); Except(L2,L1,Ld); cout<<'n'<<"B-A:"; PrintList(Ld); }
运行结果
暑期编程PK赛 得CSDN机械键盘等精美礼品!



