




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录目录一、系统开发的背景一、系统开发的背景.1二、系统分析与设计二、系统分析与设计.1(一)(一)系统功能要求系统功能要求.1(二)(二)系统模块结构设计系统模块结构设计.1三、系统的设计与实现三、系统的设计与实现.2(一)(一)求集合的交集求集合的交集.2(二)(二)求集合的并集求集合的并集.4(三)(三)求集合的差集求集合的差集.5四、系统测试四、系统测试.6(一)(一)测试主函数测试主函数VOIDVOID MAINMAIN()() .6(二)(二)测试交集测试交集OROR(H1,H2,H3)(H1,H2,H3)函数函数.6(三)(三)测试并集测试并集ANDAND(H1,H2,H3)(H
2、1,H2,H3)函数函数.7(四)(四)测试差集测试差集DIFFERDIFFER(H1,H2,H3)(H1,H2,H3)函数函数.7五、总结五、总结.7六、附件(代码、部分图表)六、附件(代码、部分图表).81集合的交并差运算集合的交并差运算一、一、系统开发的系统开发的背景背景为了提高学生对有序链表知识的掌握,以及对集合间的运算能力,因此,这个系统的设计可以对学生这方面的能力有所巩固以及拓展。二、系统分析与设计二、系统分析与设计(一)(一) 系统功能要求系统功能要求可以进行两个集合间的交,并,差运算。(二)(二) 系统模块结构设计系统模块结构设计通过对系统功能的分析,学生综合测评系统功能如图
3、X 所示。图 1 集合的交并差通过上图的功能分析,把整个系统划分为 3 个模块:1、求集合的交集。该模块主要实现:对集合中的元素进行分析,把两个集合中共有的元素保存到另一个集合中,借助函数or(H1,H2,H3)来实现。集合的交、并、差运算求集合的交集求集合的并集求集合的差集22、求集合的并集。该模块主要实现:对集合中的元素进行分析,把两个集合中所有的元素保存到另一个集合中,借助函数and(H1,H2,H3)来实现。3、求集合的差集。该模块主要实现:对集合中的元素进行分析,把两个集合中不共有的元素保存到另一个集合中,借助函数differ (H1,H2,H3)来实现。三、系统的设计三、系统的设计
4、与实现与实现(一)(一) 求集合的交集求集合的交集分析:定义一个输入集合和一个输出集合,然后在定义一个求交集的函数。流程图如图 2 所示:图 2:求交集流程图该模块的具体代码如下所示:#include#include#includetypedef struct LNode/定义结构体类型指针 char data;struct LNode *next;定义输入集合定义输出集合求集合的交集3LNode,*LinkList;/定义头指针变量void readdata(LinkList H)/有序表的抽象数据类型定义,定义输入集合函数 LinkList p; char tmp; printf(请输入小
5、写字母)n); scanf(%c,&tmp); while(tmp!=n) p=(LinkList)malloc(sizeof(struct LNode);p-data=tmp;p-next=H-next;H-next=p;scanf(%c,&tmp); void pop(LinkList H)/定义输出集合函数LinkList p;p=H-next;while(p!=NULL)/非空printf(%c,p-data);p=p-next;printf(n);void or(LinkList H1,LinkList H2,LinkList H3)/定义集合的交集函数 LinkLi
6、st p1,p2,p3;p1=H1-next;while(p1!=NULL)/非空p2=H2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2!=NULL)&(p2-data=p1-data)p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=H3-next;H3-next=p3;p1=p1-next;4(二)(二) 求集合的并集求集合的并集分析:在上述输入和输出集合的下,定义一个求并集的函数。流程图如图 3 所示:图 3:求并集流程图该模
7、块的具体代码如下所示:void and(LinkList H1,LinkList H2,LinkList H3)/定义集合的并集函数LinkList p1,p2,p3;p1=H1-next;while(p1!=NULL)/非空p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=H3-next;H3-next=p3;p1=p1-next;p2=H2-next;while(p2!=NULL)p1=H1-next;while(p1!=NULL)&(p1-data!=p2-data)p1=p1-next;if (p1
8、=NULL)定义输入集合定义输出集合求集合的并集5p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p2-data;p3-next=H3-next;H3-next=p3;p2=p2-next;(三)(三) 求集合的差集求集合的差集分析:在上述输入和输出集合的下,定义一个求差集的函数。流程图如图 4 所示:图 4:求差集流程图该模块的具体代码如下所示:void differ(LinkList H1,LinkList H2,LinkList H3)/定义集合的差集函数 LinkList p1,p2,p3;p1=H1-next;while(p1!=NU
9、LL)p2=H2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2=NULL)定义输入集合定义输出集合求集合的差集6p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=H3-next;H3-next=p3;p1=p1-next;四、系统测试四、系统测试(一)(一) 测试主函数测试主函数 voidvoid main()main()测试该函数的调用:图 5 (二)(二) 测试交集测试交集 or(H1,H2,H3)or(H1,H2,H3)函数函数 测试该
10、函数的调用:图 6 7(三)(三) 测试并集测试并集 and(H1,H2,H3)and(H1,H2,H3)函数函数 测试该函数的调用:图 7 (四)(四) 测试差集测试差集 differ(H1,H2,H3)differ(H1,H2,H3)函数函数 测试该函数的调用:图 8 五、总结五、总结8系统完成了两个集合的交集,并集和差集之间的运算功能。但本系统还有以下几处不足之处不足:1.当输入的第一个集合元素少于第二个集合元素时,输出的结果将会以倒序的顺序输出,当输入的小写字母外的字符时,本系统还是会输出相应的结果,此外,本系统在输入集合元素时,如果输入相同的元素在同一个集合中,不能自动滤去相同字符。
11、通过本次的程序设计,起初由于对集合的算法推敲不足,走了许多弯路,在指针处出现错误。本程序实现的是集合的交,并,差运算,只要写出其中一种,就可以模仿写出另两种了。在三者间运用了分支结构,对以前的只是有所回顾,本次程序程序设计,得到了一次很好的程序设计训练。六、附件(代码、部分图表)六、附件(代码、部分图表)代码:#include#include#includetypedef struct LNode/定义结构体类型指针 char data;struct LNode *next;LNode,*LinkList;/定义头指针变量void readdata(LinkList H)/有序表的抽象数据类型
12、定义,定义输入集合函数 LinkList p; char tmp; printf(请输入小写字母)n); scanf(%c,&tmp); while(tmp!=n) p=(LinkList)malloc(sizeof(struct LNode);p-data=tmp;p-next=H-next;H-next=p;9scanf(%c,&tmp); void pop(LinkList H)/定义输出集合函数LinkList p;p=H-next;while(p!=NULL)/非空printf(%c,p-data);p=p-next;printf(n);void and(LinkLi
13、st H1,LinkList H2,LinkList H3)/定义集合的并集函数LinkList p1,p2,p3;p1=H1-next;while(p1!=NULL)/非空p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=H3-next;H3-next=p3;p1=p1-next;p2=H2-next;while(p2!=NULL)p1=H1-next;while(p1!=NULL)&(p1-data!=p2-data)p1=p1-next;if (p1=NULL)p3=(LinkList)malloc(
14、sizeof(struct LNode);p3-data=p2-data;p3-next=H3-next;H3-next=p3;p2=p2-next;void or(LinkList H1,LinkList H2,LinkList H3)/定义集合的交集函数 10LinkList p1,p2,p3;p1=H1-next;while(p1!=NULL)/非空p2=H2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2!=NULL)&(p2-data=p1-data)p3=(LinkList)malloc(sizeof(
15、struct LNode);p3-data=p1-data;p3-next=H3-next;H3-next=p3;p1=p1-next;void differ(LinkList H1,LinkList H2,LinkList H3)/定义集合的差集函数 LinkList p1,p2,p3;p1=H1-next;while(p1!=NULL)p2=H2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2=NULL)p3=(LinkList)malloc(sizeof(struct LNode);p3-data=p1-data;p
16、3-next=H3-next;H3-next=p3;p1=p1-next;void main()/主函数int x;printf(*n);printf(* *n);printf(* 请输入数据,按回车键结束! *n); LinkList H1,H2,H3; printf(* *n);printf(*n);11H1=(LinkList)malloc(sizeof(struct LNode);H1-next=NULL;H2=(LinkList)malloc(sizeof(struct LNode);H2-next=NULL;H3=(LinkList)malloc(sizeof(struct LNode);H3-next=NULL; printf(请输入第一个集合:);readdata(H1);/调用输入集合函数printf(请输入第二个集合:);readdata(H2);/调用输入集合函数A:printf(*n);printf(* *n);printf(* 1.求并集 2.求交集 3.求差集 4.退出 5.重新运算 *n);printf(* *n);printf(*n);doprintf(请选择序号:);scanf(%d,&x);switch(x)case 1:printf(两集合的并是:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省江门市第九中学2024-2025学年九年级上学期期中考试化学试卷(含答案)
- 电生理知识培训课件
- 电焊课件模板
- 北中高三期末考试试卷及答案
- 北京高考化学考试真题及答案
- 3-Oxoeicosa-cis-cis-11-14-dienoyl-CoA-3-Oxoeicosa-cis-cis-11-14-dienoyl-coenzyme-A-生命科学试剂-MCE
- 北海物理中考试卷真题及答案
- 高温用车安全知识培训课件
- 保利地产入职考试试题及答案
- 中考山脉考试题及答案
- 国家开放大学电大专科《政治经济学》网络课机考网考形考单项选择题题库及答案
- 公开课教学评价表
- 消防验收规范标准(最新完整版)19844
- 教研工作手册
- 电工电子技术基础教学大纲
- 独树一帜的中国画(课堂PPT)
- 制钵机的设计(机械CAD图纸)
- 生产设备控制程序
- 艾草深加工项目可行性研究报告写作范文
- LCM不良命名规范
- 《融资租赁业务介绍》PPT课件.ppt
评论
0/150
提交评论