集合的并、交、差集运算的设计

上传人:博****1 文档编号:500027062 上传时间:2023-05-24 格式:DOC 页数:18 大小:95.50KB
返回 下载 相关 举报
集合的并、交、差集运算的设计_第1页
第1页 / 共18页
集合的并、交、差集运算的设计_第2页
第2页 / 共18页
集合的并、交、差集运算的设计_第3页
第3页 / 共18页
集合的并、交、差集运算的设计_第4页
第4页 / 共18页
集合的并、交、差集运算的设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《集合的并、交、差集运算的设计》由会员分享,可在线阅读,更多相关《集合的并、交、差集运算的设计(18页珍藏版)》请在金锄头文库上搜索。

1、青岛理工大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: 计算机科学与技术 学生姓名: 刘文泽 班级 计算133 学号: 201207091 题目: 集合的并、交、差集运算的设计 起迄日期: 2015.6.292015.7.10 设计地点: 计算机学院机房 指 导 教 师: 巩玉玺、林孟达 完成日期: 2015 年7月 10 日 目录一、 需求分析1. 选做此课题或项的目的2. 程序所实现的功能3. 问题解决方案二、 内容设计1. 根据所选题目,给出模块图2. 编写程序关键代码三、 调试分析1. 实际完成的情况说明2. 程序的性能分析。3. 上机过程中出现的问题及其解决方案4.

2、程序中可以改进的地方说明。四、 用户手册五、 设计总结六、 参考文献七、 附录一、需求分析1.选做此课题或项的目的用c+实现集合的并、交、差集运算。2.程序所实现的功能(1)用户能够输入两个集合元素;(2)能够额按成集合的交、并、差运算;(3)集合的元素类型可以为整数、字符串和小数。(4)输入运算结果。(5)使用链表来表示集合,完成集合的合并,求交集等。3、问题解决方案根据系统功能需求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及他们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(

3、5)完成类中各个成员函数的定义;二、内容设计1.根据所选题目,给出模块图通过对系统功能的分析,集合交并差系统功能如图所示:(一) 集合的交集运算:分析:首先输出集合1与集合2的元素,然后输出集合1与集合2中相同的元素。流程图如图所示:(二) 集合的并集运算:分析:首先输出集合1与集合2的元素,然后输出集合1与集合2中的全部元素。流程图如图所示: (三)差集的运算首先输出集合1减去集合2的结果,然后输出集合2减去集合1中的结果。流程图如图所示: 2.编写程序关键代码typedef struct nodeint data;struct node* next;lnode,*linklist;lnod

4、e *init_lnode();void input(linklist l);void jiaoji(linklist A,linklist B,linklist C);void heji(linklist A,linklist B,linklist C);void chaji(linklist A,linklist B, linklist C);void output(linklist l);void main() lnode *A,*B,*C;A=init_lnode();B=init_lnode();C=init_lnode();printf(求AB集合的交集和并集n);printf(请

5、输入A集合的元素:);input(A);printf(n请输入B集合的元素:);input(B);printf(n输入完成n);printf(n按任意键进入主菜单:);getch();int sel;dochar menu=nnn- 1.交集运算 -nn - 2和集运算-nn -3.差集运算 -nn - 0. 退出 -nn;printf(%s,menu);printf(n请在0-3中选择:);scanf(%d,&sel);switch(sel)case 1: printf(AB集合的交集是:); jiaoji(A,B,C); output(C); C-next=NULL; break; cas

6、e 2: printf(AB的合集是:);heji(A,B,C);output(C); C-next=NULL;break; case 3:chaji(A,B,C); break; case 0:break;while(sel!=0); /*主函数结束*/ /*初始化函数*/lnode * init_lnode() lnode *l; l=(lnode *)malloc(sizeof(lnode); l-next=NULL; return l;/*录入函数*/void input(linklist l)lnode *s;int x;scanf(%d,&x);while(x!=0)s=(lnod

7、e *)malloc(sizeof(lnode);s-data=x;s-next=l-next;l-next=s;scanf(%d,&x);/*交集函数*/void jiaoji(linklist A,linklist B,linklist C)lnode *p,*q,*t;p=A-next;while(p!=NULL)q=B-next;while(q!=NULL)&(q-data!=p-data)q=q-next;if(q!=NULL)&(q-data=p-data)t=(lnode*)malloc(sizeof(lnode);t-data=p-data;t-next=C-next;C-ne

8、xt=t;p=p-next;/*输出函数*/void output(linklist l)lnode *s;s=l-next;while(s!=NULL) printf(%5d,s-data);s=s-next;printf(n);/*并集函数*/void heji(linklist A,linklist B,linklist C)lnode *p,*q,*t;p=A-next;while(p!=NULL) t=(lnode*)malloc(sizeof(lnode);t-data=p-data;t-next=C-next;C-next=t;p=p-next;q=B-next;while(q!

9、=NULL)p=A-next;while(p!=NULL)&(p-data!=q-data) p=p-next;if (p=NULL)t=(lnode*)malloc(sizeof (lnode);t-data=q-data;t-next=C-next;C-next=t;q=q-next;/*差集函数*/void chaji(linklist A,linklist B, linklist C)lnode *p,*q,*s,*t; p=A-next;printf(A与B的差集是:n);while(p!=NULL)q=B-next;while(q!=NULL)&(p-data!=q-data)q=

10、q-next;if(q=NULL)s=(lnode*)malloc(sizeof(lnode);s-data=p-data;s-next=C-next;C-next=s;p=p-next;output(C);C-next=NULL; q=B-next;printf(B与A的差集是:n);while(q!=NULL)p=A-next;while(p!=NULL)&(p-data!=q-data)p=p-next;if(p=NULL)t=(lnode*)malloc(sizeof(lnode);t-data=q-data;t-next=C-next;C-next=t;q=q-next;output(C);三、调试分析1.实际完成的情况说明(1)、有序表的抽象数据类型定义为:input(linklist l)初始条件:l是以l为头节点的空链表。操作结果:生成以l为头节点的非空链表。output(linklist l)初始条件:l是以l为头节点的非空链表。操作结果:将以l为头节点的链表中数据逐个输出。(2)、集合的抽象数据类型定义为:heji(linklist A,linklist B,linklist C)初始条件:链表A、B、C已存在操作结果:生成一个由A和B的并集

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号