数据结构课程设计_集合的并、交和差运算

数据结构课程设计_集合的并、交和差运算

ID:9418731

大小:77.50 KB

页数:7页

时间:2018-04-30

数据结构课程设计_集合的并、交和差运算_第1页
数据结构课程设计_集合的并、交和差运算_第2页
数据结构课程设计_集合的并、交和差运算_第3页
数据结构课程设计_集合的并、交和差运算_第4页
数据结构课程设计_集合的并、交和差运算_第5页
资源描述:

《数据结构课程设计_集合的并、交和差运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构课程设计学院:信息科学与工程学院专业:计算机科学与技术班级:学号:学生姓名:指导教师:2009年12月25日一、实验内容实验题目:编制一个演示集合的并、交和差运算的程序。需求分析:1、 本演示程序中,集合的元素限定为小写字母字符[“a”…”z”]。集合输入的形式为一个以“回车符“为结束标志的字符串,串中字符顺序不限。2、 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。3、 程序执

2、行的命令包括:1) 构造集合1;2)构造在集合2;3)求并集;4)求交集;5)求差集;6)返回;7)结束。“构造集合1”和“构造集合2”时,需以字符的形式键入集合元素。二、数据结构设计为了实现上述程序的功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合。1、有序表的抽象数据类型定义为:readdata(pointerhead)初始条件:head是以head为头节点的空链表。操作结果:生成以head为头节点的非空链表。pop(pointerhead)初始条件:head是以head

3、为头节点的非空链表。操作结果:将以head为头节点的链表中数据逐个输出。2、集合的抽象数据类型定义为:and(pointerhead1,pointerhead2,pointerhead3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的并集构成的集合head3。or(pointerhead1,pointerhead2,pointerhead3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的交集构

4、成的集合head3。differ(pointerhead1,pointerhead2,pointerhead3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的差集构成的集合head3。3、本程序抱含四个模块:1) 节点结构单元模块——定义有序表的节点结构;2) 有序表单元模块——实现有序表的抽象数据类型;3) 集合单元模块——实现集合获得抽象数据类型;4)主程序模块:Voidmain(){初始化;do{接受命令;处理命令;}while(“命令”

5、!=“退出”);}三、算法设计#include#includetypedefstructLNode//定义结构体类型指针{chardata;structLNode*next;}*pointer;voidreaddata(pointerhead)//定义输入集合函数{pointerp;chartmp;scanf("%c",&tmp);while(tmp!=''){p=(pointer)malloc(sizeof(structLNode));p->data=

6、tmp;p->next=head->next;head->next=p;scanf("%c",&tmp);}}voidpop(pointerhead)//定义输出集合函数{pointerp;p=head->next;while(p!=NULL){printf("%c",p->data);p=p->next;}printf("");}voidand(pointerhead1,pointerhead2,pointerhead3)//定义集合的并集函数{pointerp1,p2,p3;p1=hea

7、d1->next;while(p1!=NULL){p3=(pointer)malloc(sizeof(structLNode));p3->data=p1->data;p3->next=head3->next;head3->next=p3;p1=p1->next;}p2=head2->next;while(p2!=NULL){p1=head1->next;while((p1!=NULL)&&(p1->data!=p2->data))p1=p1->next;if(p1==NULL){p3=(poin

8、ter)malloc(sizeof(structLNode));p3->data=p2->data;p3->next=head3->next;head3->next=p3;}p2=p2->next;}}voidor(pointerhead1,pointerhead2,pointerhead3)//定义集合的交集函数{pointerp1,p2,p3;p1=head1->next;while(p1!=NULL){p2=head2->next;while((p2!=NULL)&&(p2->data!=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。