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