集合 的交并和差的运算与实现.doc_第1页
集合 的交并和差的运算与实现.doc_第2页
集合 的交并和差的运算与实现.doc_第3页
集合 的交并和差的运算与实现.doc_第4页
集合 的交并和差的运算与实现.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #include #include #include #include / 顺序表定义#define TRUE1#define FALSE0#define OK1#define ERROR0#define OVERFLOW-2#define IN_THIS_LIST 1#define NOT_IN_THIS_LIST 0 /宏定义typedef char Elemtype;typedef int Status;typedef struct ListElemtype data;struct List *next;LNode,*LinkList; /结构体定义Status InitList(LinkList &L)L=(LinkList)malloc(sizeof(LNode);if(!L) exit(OVERFLOW);L-data=NULL;L-next=NULL;return OK; /构造表头Status PrintList(LinkList L)LinkList PrintList=L-next;if(!L-next) cout该集合为空!next)coutdatanext;coutdata;coutendl;return OK; /输出表中元素Status InsertList(LinkList &L,Elemtype e)if(int)e122) return ERROR;LinkList compare=(LinkList)malloc(sizeof(LNode);LinkList insertdata=(LinkList)malloc(sizeof(LNode);compare=L;while(compare-next) if(e=compare-next-data) return TRUE; else if(enext-data) insertdata-next=compare-next; insertdata-data=e; compare-next=insertdata; return OK; compare=compare-next;insertdata-data=e;compare-next=insertdata;insertdata-next=NULL;return OK; /向表中增加元素Status DeleteList_data(LinkList &L,Elemtype e) LinkList Deletedata=L-next;while(Deletedata-next)if(!(Deletedata-next-next)&(Deletedata-next-data=e)Deletedata-next=NULL; return OK; if(Deletedata-next-data=e) Deletedata-next=Deletedata-next-next; return OK; Deletedata=Deletedata-next;Deletedata=L-next;if(Deletedata-data=e) L-next=Deletedata-next; return OK;return ERROR;Status jiaoji(LinkList La,LinkList Lb,LinkList &L)LinkList Pa=La-next;LinkList Pb=Lb-next; while(Pa)while(Pb) if(Pb-data=Pa-data) InsertList(L,Pa-data); Pb=Pb-next; Pb=Lb-next;Pa=Pa-next; return OK; /求交集函数Status chaji(LinkList La, LinkList Lb,LinkList &L)Status compare=0;LinkList Pa,Pb;Pa=La-next; Pb=Lb-next;while(Pa) while(Pb) if(Pa-data=Pb-data) compare+; Pb=Pb-next; if(!compare) InsertList(L,Pa-data); compare=0; Pb=Lb-next; Pa=Pa-next; return OK; /差集函数Status bingji(LinkList La,LinkList Lb,LinkList &L)LinkList Pa=La-next;LinkList Pb=Lb-next;while(Pa)InsertList(L,Pa-data); Pa=Pa-next; while(Pb)InsertList(L,Pb-data); Pb=Pb-next;return OK; /并集函数Status buji(LinkList L,LinkList &List)Status set=97;while(setnext;LinkList P=List-next;while(PL) while(P)if(P-data=PL-data)DeleteList_data(List,P-data); P=P-next;P=List-next; PL=PL-next;return OK; /补集函数Status compare(LinkList L,Elemtype e)LinkList P=L-next;while(P)if(P-data=e) return IN_THIS_LIST;P=P-next;return NOT_IN_THIS_LIST; /判定函数Status ziji(LinkList La,LinkList Lb)LinkList Pb=Lb-next; while(Pb) if(!compare(La,Pb-data) return FALSE; Pb=Pb-next;return TRUE;Status menu(LinkList A,LinkList B)int i;do system(cls);cout * * * * * * 集合的计算 * * * * *n; cout * :输入集合信息 *n; cout * :输出交集信息 *n;cout * :输出差集信息 *n;cout * :输出并集信息 *n;cout * :判定是否子集 *n;cout * :输出补集信息 *n;cout * :退出管理系统 *n;cout * * * * * * * 程尧 制作 * * * * * * *n;couti;if(A-next&B-next) cout集合A:; PrintList(A); cout集合B:; PrintList(B);while(i6);return i;int main()LinkList A; InitList(A);LinkList B; InitList(B);LinkList J; InitList(J);LinkList K; InitList(K);LinkList L; InitList(L);LinkList M; InitList(M);Elemtype a; doswitch(menu(A,B)case 1:cout请输入集合元素,以“0”结束endl;couta;while(a!=0)InsertList(A,a);cina; couta; while(a!=0) InsertList(B,a); cina; break;case 2: jiaoji(A,B,J);cout两集合的交集:;PrintList(J);cout输入任意键返回主菜单a;break;case 3:chaji(A,B,K);cout集合A关于集合B的差集:;PrintList(K);cout输入任意键返回主菜单a;break;case 4:bingji(A,B,L);cout两集合的并集:;PrintList(L);cout输入任意键返回主菜单a;break;case 5:if(ziji(A,B) cout集合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论