1、 课 程 设 计 报 告 课程名称课程名称 数据结构 课题名称课题名称 集合的并、交和差运算 专专 业业 通信工程 班班 级级 通信 1101 学学 号号 姓姓 名名 指导教师指导教师 2013 年年 6 月月 29 日日 课 程 设 计 任 务 书 课程名称 数据结构 课 题 集合的并、交和差运算 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2013 年 6 月 23 日 任 务 完成日期 2013 年 6 月 29 日 目目 录录 一 需求分析一 需求分析.1 1.问题描述. .1 2.基本要求 .1 3.测试数据. 1 4.实现提示 .1 二概要设计概要设计.1 1.数
2、据类型定义1 2.集合的定义1 3.基本操作1 4.调用关系. . .2 三详细设计详细设计.3 1.具体算法流程.4 2.具体的程序功能实现5 3.伪码算法.5 四四调试分析调试分析.9 1.调试过程中遇到的问题. 9 2.算法的时空分析.10 3.经验和体会.10 五 用户使用说明用户使用说明.11 六 测试结果测试结果.11 1.做完一次运算后按回车键继续下一次运算.11 2.做完运算后输入字母“e”退出运算12 七七附录附录.13 程序源代码 . .13 1 一需求分析一需求分析 1.问题描述问题描述 编制一个能演示执行集合的并、交和差运算的程序。 2.基本要求基本要求 (1) 集合的
3、元素限定为小写字母字符 az 。 (2) 演示程序以用户和计算机的对话方式执行。 3.测试测试数据数据 (1)Set1=“magazine“,Set2=“paper“, Set1Set2=“aegimnprz“,Setl Set2=“ae“,Set1-Set2=“gimnz“。 (2)Set1= “ 012oper4a6tion89“,Set2=“error data“, Set1Set2=“adeinoprt“,Setl Set2=“aeort“,Set1-Set2=“inp“。 4.实现提示实现提示 以有序链表表示集合。 二概要设计二概要设计 为实现上述程序功能,应以有序链表表示集合。为此
4、,需要两个抽象数据类型:有 序表和集合。 1. 有序表的抽象数据类型定义为:有序表的抽象数据类型定义为: typedef struct LNode char data; struct LNode *next; LinkList; 2 集合的定义为:集合的定义为: char set1maxsize,set2maxsize; 3.基本操作基本操作 void GreatListR(LinkList * InitList(N); GreatListR(L,set1,i); GreatListR(U,set1,i); sort(U); /元素排序 dels(U); /删除相同元素 仅留一个 sort(L
5、); /元素排序 dels(L); /删除相同元素 仅留一个 printf(“请输入集合 set2=“); for(j=0;jdata=pa-data; r-next=s;r=s; pa=pa-next; else s=(LinkList *)malloc(sizeof(LinkList); s-data=pb-data; r-next=s;r=s; pb=pb-next; while(pa!=NULL) s=(LinkList *)malloc(sizeof(LinkList); s-data=pa-data; r-next=s;r=s; pa=pa-next; while(pb!=NULL) s=(LinkList *)malloc(sizeof(LinkList); s-data=pb-data; r-next=s;r=s; pb=pb-next; 7 r-next=NULL; printf(“两个集合的并集为 set1set2:“); void dels(LinkList * while(p-next!=NULL) if(p-data=p-next-data) q=p-next; p-next=q-next; free(q); else p=p-next; (2)交集运算 void jiaoj