数据结构课程设计.docx
- 文档编号:2987539
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:80.80KB
数据结构课程设计.docx
《数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构课程设计
本科生课程设计论文
题目:
集合的并交差运算
学生姓名:
学号:
专业:
计算机科学与技术
班级:
指导教师:
2011年6月23日
目录
课程设计任务书-----------------------------------------------------------------------------2
1.需求分析---------------------------------------------------------------------------------3
2.概要设计---------------------------------------------------------------------------------3
3.详细设计说明---------------------------------------------------------------------------3
3.1设计结构-------------------------------------------------------------------------------3
3.2函数解析-----------------------------------------------------------------------------4
3.2.1构造函数---------------------------------------------------------------------4
3.2.2排序函数---------------------------------------------------------------------5
3.2.3插入,删除,查找函数--------------------------------------------------6
3.2.4并交差运算函数-----------------------------------------------------------6
3.2.5输出函数--------------------------------------------------------------------7
3.2.6集合操作函数---------------------------------------------------------------7
4.程序运行结果------------------------------------------------------------------------------8
5.总结------------------------------------------------------------------------------------------9
6.附页—程序代码---------------------------------------------------------------------------10
7.参考文献----------------------------------------------------------------------------------14
课程名称
数据结构课程设计
设计题目
集合的并交差运算
指导教师
孙涛
时间
2011/6/13~24
一、教学要求
1.掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
集合的并交差运算
以链表存储集合,在此基础上完成对集合的操作。
要求设计类(或类模板)来描述集合,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:
v输入、输出集合
v查询集合中的元素
v在集合中进行插入、删除元素
v实现集合的并、交、差运算
并设计主函数测试该类。
三、设计要求及成果
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
四、进度安排
资料查阅与讨论(1天)
系统分析(2天)
系统的开发与测试(5天)
编写课程设计说明书和验收(2天)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
4.根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问
六、建议参考资料
1.《数据结构(C语言版)》严蔚敏、吴伟民主编清华大学出版社2004.11
2.《数据结构课程设计案例精编(用C/C++描述)》,李建学等编著,清华大学出版社2007.2
3.《数据结构:
用面向对象方法与C++语言描述》,殷人昆主编, 清华大学出版社2007
1.需求分析:
设计要求建立集合,并且能够对集合进行输入和输出,插入,删除,查询合中的元素,此外还能进行集合间的并,交,差预算。
因此用一个类创建的对象最为一个集合体,并在类中添加对集合操作插入,删除,查询,并交差运算的成员函数。
通过对象调用成员函数实现集合各种操作功能。
2.概要设计:
首先设计一个结构体structnode作为集合各元素的存储节点。
接着设计集合类classgroup,用链表存储集合,通过构造函数创建集合链表,并通过classgroup类的成员函数实现对集合插入,删除,查找和集合间的并交差运算,并交差运算使用运算符的重载。
集合类classgroup将结构体structnode的指针L和整数变量n作为数据成员,其中L是集合链表的头指针同时也是链表的第一个数据节点,n用来记录集合中的元素个数。
集合类classgroup的成员函数包括如下成员
1.group()//无参构造函数
2.group(intk)//有参构造函数
3.~group()//析构函数
4.voidsetingque();//排序函数
5.voidoutplay();//输出函数
6.voidinsert(intk);//插入函数
7.groupDelete(intk);//删除函数
8.voidSearch(intk);//查找函数
9.groupoperator+(groupT);//并运算
10.groupoperator-(groupT);//差运算
11.groupoperator*(groupT);//交运算
通过以上函数实现对集合的插入,删除,查找,以及并,交,差运算。
除了classgroup类外,还有一个对集合进行修改和运算的操作函数groupOperater(groupT)它有主函数voidmain()直接调用。
3.详细设计说明:
3.1:
整个程序设计的机构如下图,图1.3.1-1所示
图1.3.1-1程序设计结构图
3.2函数解析:
3.2.1构造函数:
group()
group(intk)
Group类中有两个构造函数,无参和有参构造函数,无参构造函数用于创建空集合,有参构造函数用于创建非空集合,其实现代码如下
group(intk)
{inti,m;
n=k;
groupnode*p;
L=NULL;
for(i=0;i {cin>>m; p=(structnode*)malloc(sizeof(groupnode)); p->data=m; p->next=L; L=p;}} 形参K传递的是集合中元素的个数,通过for语句创建K个元素节点用动态创建的结构体*p来接收每个节点然后将其插入到头结点为L的集合链表链头。 3.2.2排序函数函数 voidsetingque(); 通过有参构造函数创建的集合中的的元素是无序的,这样不仅对集合的操作不方便,而且集合的输出也不太美观,为了解决此问题group类中特地添加了排序函数voidsetingque();其算法实现采用的是冒泡排序法,在此就不对其进行解析。 3.2.3插入,删除,查找函数 voidsetingque(); voidoutplay(); voidinsert(intk); groupDelete(intk) 集合一次性创建完成之后,创建有可能不符合预先的要求此时就要对集合进行修改,group类提供了插入: voidinsert(intk);删除sgroupDelete(intk);查找voidSearch(intk);这三个成员函数,这三个函数的实现方法非常的相似,就以插入函数为例,其代码如下所示: voidgroup: : insert(intk) {groupnode*s,*p=L; while(p! =NULL) {if(k! =p->data)p=p->next; Else;break; if(! p){s=(structnode*)malloc(sizeof(groupnode)); s->data=k;s->next=L;L=s;n++;} else{cout<<"警告! ! 插入的内容已存在! "< 通过参数K将要插入的元素值传递到插入函数,先在目标集合中查看待插入元素是否已存在,如果不存在就将该元素插入到集合链表,如果已存在则退出插入函数并输出“警告! 插入内容已存在! ”的警告。 删除函数与此类同,先查找若找到了就将其节点删除,若找不到退出并输出警告。 3.2.4并交差运算函数 groupoperator+(groupT);//并运算 groupoperator-(groupT);//差运算 groupoperator*(groupT);//交运算 集合的并交差运算是两个链表间的运算,为了表示的更加直观简洁,采用了运算运算符的重载用“+”表示两集合和“并运算”,“*”表示两集合“交运算”,“—”表示两集合的“差运算”。 以交运算为例: groupgroup: : operator*(groupT) {groupS;groupnode*p,*q,*t; p=L; while(p! =NULL) {q=T.L; while(q! =NULL) {if(q->data==p->data)break; q=q->next;} if(q){t=(structnode*)malloc(sizeof(groupnode)); t->data=p->data;t->next=S.L; S.L=t;S.n++;} p=p->next;} if(S.L==NULL)cout<<"交集为空! ! "< 先创建新对象S用来存放两
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计