数据结构课程设计报告(集合交集并集运算).doc
《数据结构课程设计报告(集合交集并集运算).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告(集合交集并集运算).doc(19页珍藏版)》请在三一办公上搜索。
1、数据结构课程设计报告陕西师范大学计算机科学学院计算机科学与技术专业课程设计报告课程名称:数据结构课程设计课程设计题目:集合的交集并集运算设计姓 名:刘金杰, 杨冰,李啟梅,孙玉婷,王皓靖,王婷,尹淑韵,李玉婷,刘卓院 系:计算机科学学院专 业:计算机科学与技术年级班级:10级02班指导教师:雷秀娟日期:2012年3月16日 3月21日目 录一 课程设计的目的4二 课程设计的要求4三 课程设计的报告内容41系统说明42设计目标和主要功能53. 设计原则54. 系统头文件及流程图55. 程序运行6. 系统的优点和缺点四 收获与体会五 遇到的问题六 源代码七 参考资料集合的交集并集运算一. 课程设计
2、的目的1.掌握在Visual C+集成开发环境下编辑、编译、链接和运行一个C+程序的基本方法; 2.利用最近所学的知识并结合C和C+编写程序,实现集合的简单运算; 3.培养同学与同学之间团结协作互帮互助的精神,使团队精神发挥的淋漓尽致;4. 同时培养同学们的积极动脑动手能力,培养兴趣;二. 课程设计的要求 要求同学能够结合所学过的知识和内容有目的编写程序,能够不断的尝试和查阅资料,对所学的知识有更深刻的理解,并在理解的基础上加以运用.根据自己对线性表的概念、原理和机制的理解,结合数学知识编写程序,并求解运行出集合的交集并集运算.三. 课程设计的报告内容1.系统说明:系统名称是集合的交集并集运算
3、;2.设计目标和主要功能:给出集合的元素个数及元素,可以分别做出集合的交集和并集运算; 3.设计原则:(1)系统运行安全可靠,稳定性好 ;(2)系统输入界面友好,操作简便易行,尽量减少用户的输入工作量; 4.系统头文件及流程图(1)系统的头文件#include#include#include /malloc()等 #include / INT_MAX等 #include / EOF(=Z或F6),NULL #include / atoi() #include / eof() #include / floor(),ceil(),abs() #include / exit() #include(2
4、)流程图5.程序运行: (1)输入部分演示:(2)求交集部分演示:(3)求并集部分演示:(4)退出部分演示:6.系统优点和缺点(1) 优点:程序简洁明了,可以明确的实现集合的简单的运算,并加以处理,可以加强理解力,并用了所学过的知识实现操作.除此之外,不但可以实现数字与数字之间的运算,还可以实现带字母集合的运算,使得程序多样化,拓展知识.(2) 缺点:只能实现集合的简单操作,运算量小,很多方面设计的不够全面细致,集合的另外许多功能不能加以体现.除此之外,有些步骤重复化,但是又找不到简洁明了的解决办法. 四. 收获与体会通过小组成员的共同努力,我们联系以前学过的知识,并结合新学的有关线性表的内容
5、,除此之外,还查阅了不少资料,并利用所学的数学知识,运用逻辑的投保编写出这个程序.这是我们小组人共同努力的成果,在此过程中,我们体会到了团结协作的力量,每个人都有个人的任务,我们分工明确,各尽其责,并利用课余时间互相帮助讨论,才有今天的成果.除此之外,我们还共同回忆了有关于C和C+的部分知识,熟悉操作,对线性表的知识也得到的深刻的 理解和体会。五. 遇到的问题1. 在讨论用何种算法实现的过程中,大家的意见和想法不一,但是大家并没有固执己见,而是耐心听从他人意见和建议,求同存异,不断改进算法,使程序达到最完美的标准.2. 在使用线性表的问题上,不知道使用几个更简洁,更易懂,在上网查阅资料后才得出
6、答案. 六. 源代码/头文件#include#include#include /malloc()等 #include / INT_MAX等 #include / EOF(=Z或F6),NULL #include / atoi() #include / eof() #include / floor(),ceil(),abs() #include / exit() #include/函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1/#define OVERFLOW -2 因为在
7、math.h中已定义OVERFLOW的值为3,故去掉此行 typedef intStatus; /Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; /Boolean是布尔类型,其值是TRUE或FALSE typedef int ElemType; / 线性表的动态分配顺序存储结构 #define LIST_INIT_SIZE 10 / 线性表存储空间的初始分配量 #define LISTINCREMENT 2 / 线性表存储空间的分配增量 typedef structElemType *elem; / 存储空间基址 int length; /
8、 当前长度 int listsize; / 当前分配的存储容量(以sizeof(ElemType)为单位) SqList;/ 顺序表示的线性表的基本操作(12个) Status InitList(SqList *L) / 算法2.3 /操作结果:构造一个空的顺序线性表 (*L).elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!(*L).elem)exit(OVERFLOW); / 存储分配失败 (*L).length = 0; / 空表长度为0 (*L).listsize = LIST_INIT_SIZE; / 初始存储
9、容量 return OK;Status DestroyList(SqList *L) / 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L free(*L).elem);(*L).elem = NULL;(*L).length = 0;(*L).listsize = 0;return OK;Status ClearList(SqList *L) / 初始条件:顺序线性表L已存在。操作结果:将L重置为空表 (*L).length = 0;return OK;Status ListEmpty(SqList L) / 初始条件:顺序线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返
10、回FALSE if(L.length = 0)return TRUE;elsereturn FALSE;int ListLength(SqList L) / 初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数 return L.length;Status GetElem(SqList L, int i, ElemType *e) / 初始条件:顺序线性表L已存在,1iListLength(L) / 操作结果:用e返回L中第i个数据元素的值 if(i L.length)exit(ERROR);*e = *(L.elem+i-1);return OK;int LocateElem(SqL
11、ist L, ElemType e, Status(*compare)(ElemType, ElemType) / 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0) / 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 / 若这样的数据元素不存在,则返回值为0。算法2.6 ElemType *p;int i = 1; / i的初值为第1个元素的位序 p = L.elem; / p的初值为第1个元素的存储位置 while(i = L.length & !compare(*p+, e)+i;if(i=L.length)return i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 集合 交集 集运

链接地址:https://www.31ppt.com/p-2887093.html