版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、桂林电子科技大学数据结构课程设计说明书编号: 730 数据结构与算法课程设计说明书集合的交并差运算 学院: 海洋信息工程学院 专 业: 网络工程 学生姓名: xx 学 号: xx 指导教师: xx 2017年 12 月 21 日目录目录2概述3程序说明31 实验内容41.1实验目的41.2实验任务41.3要求42数据结构设计及流程图52.1抽象数据结构类型定义52.2本程序包含四个模块73测试数据83.1源程序83.2测试数据及程序运行情况144总结15参考文献15概述本演示程序的编写,主要运用的我们学的第二章线性表中的知识。线性结构的特点是:在数据元素的非空有限集中,(1)存在唯一的一个被称
2、做“第一个”的数据元素;(2)存在唯一的一个被称做“最后一个”的数据元素;(3)除第一个之外,集合中的每个数据元素均只有一个前驱;(4)除最后一个之外,集合中每个数据元素均只有一个后继。本程序需要两个抽象数据类型:有序表和集合。而且采用了单链表来实现。一、程序说明本程序主要利用单链表及函数,实现集合的交集、并集和差集运算。运行程序说明:菜单执行的命令包括<0-7>:<1>“请输入A集合的个数与A集合元素”<2>“请输入B集合个数与B集合的元素”<3>“A集合的有序集合”<4>“B集合的有序集合”<5>“AB集合的并集”&l
3、t;6>“AB集合的交集”<7>“AB集合的差集”<0>“退出”注:展示程序中,集合元素限定为小写字母数据,以“回车键”束标志。1、 实验内容1.1实验目的:设计一个演示集合的交、并、差的运算程序1.2实验任务1) 使用单链表来表示集合,完成集合的交集、并集、差等操作。2) 采用链表等数据结构。3) 集合的元素限定为数字和小写的英文字母1.3实验要求:1. 初步完成总体设计,建立头文件,确定函数个数。2. 完成以下条件:1) 界面清楚,函数功能划分好2) 总体设计应画流程图3) 程序要加必要的注释4) 提供测试方案注:程序多次测试,弥补漏洞。要求:1) 展示程序中
4、,集合元素限定为小写字母数据。集合输入的形式为一以“回车键”束标志。2)展示程序以用户和计算机的对话方式执行,即在程序输出显示“提示信息”之后,然后再输入命令;相应的输入数据和运算结果显示在其后。3)程序执行的命令包括<0-7>:<1>“请输入A集合的个数与A集合元素”<2>“请输入B集合个数与B集合的元素”<3>“A集合的有序集合”<4>“B集合的有序集合”<5>“AB集合的并集”<6>“AB集合的交集”<7>“AB集合的差集”<0>“退出”程序功能:计算两个的集合的交、并、差以及重新
5、输入集合功能。一、数据结构设计及流程图实现功能: 集合的交 集合的并为了实现上述程序的功能,应以有序单链表表示集合。为此,需要抽象数据类型:有序表和集合2.1数据类型定义1、/线性表的单链表存储结构typedef struct LNode ElemType data; struct LNode *next; LinkList;1、 实现输出功能的函数void DispList()/输出函数2、 输入n个元素的值,建立带表头结点的单链线性表Lvoid CreateList_L1(LinkList *&L,int n)4、实现集合元素由小到大排序功能void sort(LinkList *
6、&L)5、实现了将A、B集合的并集,并放到新的单链表C中void Union(LinkList *ha,LinkList*hb,LinkList*&hc)6、实现了将A、B集合的交集,并放到新的单链表C中void InterSect(LinkList *ha,LinkList*hb,LinkList*&hc)7、实现了将A、B集合的差集,并放到新的单链表C中void Subs(LinkList *ha,LinkList*hb,LinkList*&hc)8、销毁表Lvoid DestroyList(LinkList *&L)3、 主程序模块()初始化;定义
7、变量;While()选择菜单Switch()case1:case2:case3:Return 0; 2.2本程序包含四个模块1)主菜单模块2)输入集合单元模块:运用单链表输入;3)集合运算单元模块:实现集合的抽象数据类型;4)有序表单元模块:实现有序表的抽象数据类型;模块关系: 3.1测试数据:集合A=dop,B=dli,运算其交集、并集、差集。3.2源程序:源程序代码如下:#include <iostream>#include<stdio.h>#include<malloc.h>#include<cstdio>using namespace s
8、td;typedef char ElemType;typedef struct LNodeElemType data; struct LNode *next; LinkList;void DispList(LinkList*L)/输出函数LinkList *p=L->next; while(p!=NULL) printf("%c ",p->data); p=p->next; printf("n");void CreateList_L1(LinkList *&L,int n) /输入n个元素的值,建立带表头结点的单链线性表L Li
9、nkList *p,*q; L=(LinkList*)malloc(sizeof(LinkList); L->next=NULL; q=L; for(int i=n;i>0;-i) p=(LinkList*)malloc(sizeof(LinkList);/生成新结点 cin>>p->data;/输入元素值 p->next=NULL; q->next=p;/插入到表尾 q=p; void DestroyList(LinkList *&L)LinkList*p=L->next,*pre=L; while(p!=NULL) free(pre)
10、; pre=p; p=pre->next; free(pre);void sort(LinkList *&L) /从小到大排序LinkList *pre,*p,*q; p=L->next->next; L->next->next=NULL; while(p!=NULL) q=p->next; pre=L; while(pre->next!=NULL&&pre->next->data<p->data) pre=pre->next; p->next=pre->next; pre->ne
11、xt=p; p=q; void Union(LinkList *ha,LinkList*hb,LinkList*&hc) /求集合的并LinkList *pa=ha->next,*pb=hb->next,*pc,*s; hc=(LinkList*)malloc(sizeof(LinkList); pc=hc; while(pa!=NULL &&pb!=NULL ) if(pa->data<pb->data) s=(LinkList*)malloc(sizeof(LinkList); s->data=pa->data; pc-&g
12、t;next=s; pc=s; pa=pa->next; else if(pa->data>pb->data) s=(LinkList*)malloc(sizeof(LinkList); s->data=pb->data; pc->next=s; pc=s; pb=pb->next; else s=(LinkList*)malloc(sizeof(LinkList); s->data=pa->data; pc->next=s; pc=s; pa=pa->next; pb=pb->next; if(pb!=NULL)
13、pa=pb; while(pa!=NULL) s=(LinkList*)malloc(sizeof(LinkList); s->data=pa->data; pc->next=s; pc=s; pa=pa->next; pc->next=NULL;void InterSect(LinkList *ha,LinkList*hb,LinkList*&hc)/求两个有序集合的交用尾插法LinkList *pa=ha->next,*pb,*pc,*s; hc=(LinkList*)malloc(sizeof(LinkList); pc=hc; while(p
14、a!=NULL) pb=hb->next; while(pb!=NULL&&pb->data<pa->data) pb=pb->next;if(pb!=NULL &&pb->data=pa->data)/B节点在A节点中复制A节点 s=(LinkList*)malloc(sizeof(LinkList); s->data=pa->data; pc->next=s; pc=s; pa=pa->next; pc->next=NULL;void Subs(LinkList *ha,LinkList
15、*hb,LinkList*&hc) /求两个有序集合的差 LinkList *pa=ha->next,*pb,*pc,*s; hc=(LinkList*)malloc(sizeof(LinkList); pc=hc; while(pa!=NULL) pb=hb->next; while(pb!=NULL&&pb->data<pa->data) pb=pb->next;if(!(pb!=NULL &&pb->data=pa->data)/B节点不在A节点中复制A节点 s=(LinkList*)malloc(s
16、izeof(LinkList); s->data=pa->data; pc->next=s; pc=s; pa=pa->next; pc->next=NULL;int main()LinkList *ha,*hb,*hc; int n,k; while(1) cout<<"ntt 集合的简单运算nn" cout<<"ttt 菜单 n" cout<<"ttt n"cout<<"ttt 1. 请输入A集合个数与A集合的元素 n"cout<
17、;<"ttt 2. 请输入B集合个数与B集合的元素 n" cout<<"ttt 3. A集合的有序集合 n" cout<<"ttt 4. B集合的有序集合 n" cout<<"ttt 5. AB集合的并集 n" cout<<"ttt 6. AB集合的交集 n" cout<<"ttt 7. AB集合的差集 n" cout<<"ttt 0. 退出 n" cout<<&qu
18、ot;ttt n" cout<<"ttt 请选择(0-7):" cin>>k; switch(k) case 1: cout<<"请输入A集合的个数与A集合元素:"cin>>n; CreateList_L1(ha,n);break;case 2:cout<<"请输入B集合的个数与B集合元"cin>>n;CreateList_L1(hb,n); break;case 3:sort(ha);cout<<"n A的有序集合为:"
19、DispList(ha);break;case 4:sort(hb);cout<<"n B的有序集合为:"DispList(hb);break;case 5:Union(ha,hb,hc);cout<<"n AB集合的并集为:"DispList(hc);break;case 6:InterSect(ha,hb,hc);cout<<"n AB集合的交集为:" DispList(hc);break;case 7:Subs(ha,hb,hc);cout<<"n AB集合的差集为:"DispList(hc);break;case 0: cout<<"nttt- 谢谢使用!-n"cout<<"nttt按任意键退出.n" return 0; / switch /while DestroyList(ha); DestroyList(hb); DestroyList(hc); return 0;3.3测试数据及运行情况(1) 选择功能<0-7>(2) 输入A集合的个数与A集合的元素dop(3) 输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州锦屏经济开发区产业投资(集团)有限公司招聘编外(合同制)工作人员1人笔试历年常考点试题专练附带答案详解
- 2026湖北黄石市阳新县高中学校校园招聘教师26人备考题库附完整答案详解【有一套】
- 2026上半年四川成都市双流区教育系统考核招聘教师3人备考题库带答案详解(巩固)
- 2026中国药科大学继续教育学院工作人员招聘2人备考题库附完整答案详解【考点梳理】
- 2026北京城市副中心投资建设集团有限公司春季校园招聘25人备考题库附完整答案详解(名校卷)
- 2026春季海南电网有限责任公司校园招聘备考题库附答案详解【a卷】
- 2026中国资源循环集团有限公司春季校园招聘备考题库【培优a卷】附答案详解
- 2026四川宜宾珙县总工会第一次招聘社会化工会工作者1人备考题库含完整答案详解(名师系列)
- 2026内蒙古北方人才集团有限公司招聘2人笔试历年备考题库附带答案详解
- 2025青岛上合产投控股集团有限公司公开招聘(14人)笔试历年常考点试题专练附带答案详解
- 高职汽修专业《汽车电气设备维修》说课课件
- 消防员职业技能鉴定理论考试题库-导出版
- 4D卓越团队培训课件
- 《地下防水工程质量验收规范》
- DB32T 4399-2022《高层建筑工程抗震设防超限界定界定标准》
- 化妆日常护理培训课件模板
- 电梯困人救援培训
- 图纸会审记录表格
- 《药品经营许可证》注销申请表
- 脑小血管病的影像诊断
- 域虎7汽车使用说明书
评论
0/150
提交评论