ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:185.16KB ,
资源ID:17742123      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17742123.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计附代码Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计附代码Word下载.docx

1、n输n=54n=n判退 (4) 程序模块及其接口描述 该程序可以分为以下几个模块:void menu_select();1、菜单选择:单语switch过中数函在,作的择选可种五提供以操main通句菜用调 函数,进入不同的功能函数中完成相关操作。menu_select()LinkList *create();2、输入功能:并将其存入链通过一个for循环语句的控制,可以一次完成无数条记录的输入。表。3、输出功能:void print(LinkList *head);通过一个while的循环控制语句,在指针p!=NULL时,完成全部学生记录的显示。知道不满足循环语句,程序再次回到菜单选择功能界面。4

2、、删除功能:LinkList *Delete(LinkList *head); 按想要删除的学生的学号首先进行查找,通过指针所指向结点的下移来完成,如果找到该记录,则完成前后结点的连接,同时对以查找到的结点进行空间的释放,最后完成对某个学生记录进行删除,并重新存储。5、插入功能:LinkList *Insert(LinkList *head);输入你想插入的位置,通过指针所指向结点的下移,找到该位置,将该新的学生记录插入到该结点,并对该结点后面的指针下移。链表长度加一,重新存储。(5) 程序的输入与输出描述 调用LinkList *create()函数,输入学生的姓名、学号、三门功课的成绩;输

3、出:调用void print(LinkList *head)函数,输出学生的记录。(6) 程序测试 主菜单:成绩管理系统的主界面:学生成绩记录的输入:输出学生成绩记录:学生成绩记录的删除(删除学号是1101的学生记录) 插入新的学生成绩记录(插入学号为1103的学生记录) (7) 尚未解决的问题或改进方向 尚未解决的问题:该成绩管理系统还存在不少缺陷,而且它提供的功能也是有限的,只能实现学生成绩的输入、输出、删除、插入。对于,学生成绩记录的文件保存以及按学号、姓名等的查询也是缺少的。还有就是,对于多个学生成绩的操作也是不够的。改进的方向:在时间许可的条件下,尽量的完善该系统的各种功能,同时也应

4、修改系统,让它更为人性化、简单化,被广大用户所接受。(8) 对软件的使用说明 该软件是属于比较低级的软件,只是包含了课程设计的要求的几个功能:输入、输出、删除、插入。所以用户在使用的过程中肯定会受到一定的局限性、不方便性,但由于时间的缘故,无法将软件做到尽善尽美。2. 项目二 各种排序 用程序实现插入法排序、选择法排序、起泡法改进算法排序;利用插入排序、选择法排序和冒泡法的改进算法,将用户随机输入的一列数按递增的顺序排好。输入的数据形式为任何一个正整数,大小不限。输出的形式:数字大小逐个递增的数列。(2) 功能描述 该函数有以下几个功能:1) 对R0.n-1按递增有序进行直接插入排序 2) 对

5、R0.n-1按递增有序进行冒泡排序 3) 对R0.n-1按递增有序进行直接选择排序 4) 排序后的输出 调用所有排序,实现排序5) Sor排(BubbleSort()SelectSort()InsertSort()退出 (4) 详细设计void InsertSort(RecType R,int n):对R0.n-1按递增有序进行直接插入排序 void BubbleSort(RecType R,int n):对R0.n-1按递增有序进行冒泡排序 void SelectSort(RecType R,int n):对R0.n-1按递增有序进行直接选择排序 void disp(RecType R,in

6、t n):排序后的输出 void Sort():调用所有排序,实现排序 程序模块及其接口描述 (5) :该程序分为五个模块1.输入功能:void Sort() 建立一个数组存放用户在键盘上输入的关键字,在分别调用各种排序的函数,对关键字进行排序。2.直接插入排序功能:void InsertSort(RecType R,int n) 将后一个数与前一个数比较,将其插入到第一个比它大的大的数前面,其余数字往后移一个位置。每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。3.冒泡排序功能:void BubbleSort(RecType R,int n) 在排序过程中,执行完

7、最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一不足,可设置一个标志位exchange,将其初始值设置为非0,表示被排序的表是一个无序的表,每一次排序开始前设置exchange值为0,在进行数据交换时,修改exchange为非0。在新一轮排序开始时,检查此标志,若此标志为0,表示上一次没有做过交换数据,则结束排序;否则进行排序。4.直接选择排序功能:void SelectSort(RecType R,int n) 在无序区里找最小的数,第i小的数字放在第i个位置上,与原来第i个位置上的数字交换。5.输出功能:void disp(RecType R,int n) (

8、6) 程序的输入与输出描述 要求是10个为数字的关键字;排序后新的序列。(7) 程序测试 输入关键字,调用各种排序函数 (8) 尚未解决的问题或改进方向 改进方向:虽然给出了它的各种排序的结果,但是没有它的箱子过程, 这是我的改进的方向,希望能将每种排序的过程也能展示给用户,来体现它们的不同。(9) 对软件的使用说明 用户只需根据提示,在键盘上输入要排序的10个关键字。3. 项目三 有序表的合并 要求输入有序表的数据,利用顺序表和链表结构分布完成两个有序表合并功能,并输出合并后的信息。该程序有如下几个功能:1) 初始化顺序表 2) 初始化链表 3) 建立顺序表 4) 尾插法建表 5) 输出合并

9、后的顺序表 6) 输出合并后的单链表 7) 合并顺序表 8) 合并单链表 9) 调用以上的函数,实现有序表的合并 (3) 概要设计或程序流程图 开始 序初始化链表始初化顺表 尾插法建建立顺序表 合并单链合并顺序表 输出 结束 详细设计 (4) :初始化顺序表void InitList(SqList *&L) :初始化链表void InitList1(LinkList1 *&建立顺序表void CreateList(SqList *&L,ElemType a,int n) :尾插法建表void CreateListR(LinkList1 *&L,ElemType a,int n) void Di

10、spList(SqList *L):输出合并后的顺序表 void DispList1(LinkList1 *L):输出合并后的单链表 void UnionList(SqList *LA,SqList *LB,SqList *&LC):合并顺序表:合并void UnionList1(LinkList1 *LA,LinkList1 *LB,LinkList1 *&LC) 单链表 :调用以上的函数,实现有序表的合并。void Union() 程序模块及其接口描述(5) 程序有以下几个模块: 1)初始化、建立顺序表 2)初始化、建立链表3) 输出合并后的表 4) 合并表 (6) 调试分析或程序测试 有

11、序表的合并: 尚未解决的问题或改进方向(7) 不足:不能重复使用程序。 对软件的使用说明(8) 用户只需根据界面的提示,采用对应的操作。 项目四4 对设计任务内容的概述(1)用递归或非递归的方法都可 建立二叉树,层序、先序、中序、后序遍历(* 以) 任务:分别要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;输出先序遍历序输出层序遍历序列的函数、建立二叉树存储结构的的输入函数、 列的函数、输出中序遍历序列的函数、输出后序遍历序列的函数; (2)功能描述 建立二叉树 1) 2)输出二叉树 3)先序遍历非递归算法:不为空时,访问根-左-右,采用递归的方法。4) 中序遍历非递归算法:不为

12、空时,访问左-根-右,采用递归的方法。5) 后序遍历非递归算法:不为空时,访问左-右-根,采用递归的方法。6) 层序遍历:运用队列,队列不空时,有左孩子将其入队,有右孩子将其入队,同时出队。 调用以上函数实现二叉树的各种遍历 7) (3)概要设计或程序流程图 开始 输入二叉树的按层结点值 层次遍先序遍后序遍中序遍 结束 (4)详细设计 void CreateBTNode(BTNode * &b,char *str):建立二叉树 void DispBTNode(BTNode *b):输出二叉树 void PreOrder(BTNode *b):先序遍历非递归算法 :中序遍历非递归算法void I

13、nOrder(BTNode *b) :后序遍历非递归算法void PostOrder(BTNode *b) void LevelOrder(BTNode *b):层序遍历 程序模块及其接口描述(5) (6)程序的输入与输出描述 输入二叉树的按层结点值; 输出二叉树先序遍历访问结点的顺序;输出二叉树中序遍历访问结点的顺序;输出二叉树后序遍历访问结点的顺序;输出二叉树层次遍历访问结点的顺序;(7)调试分析或程序测试 用户从键盘上输入要创建的二叉树结点: 尚未解决的问题或改进方向(8) 改进方向:希望能将系统改进的更为人性化,让界面更舒适,操作更简单。 对软件的使用说明(9) 采取相应的措施,用户只

14、需按照界面的提示,到时界面会提醒用户键盘输入。 5项目五 1)对设计任务内容的概述(* 猴子选大王个)按照m,23 .m ,这群猴子(任务:一堆猴子都有编号,编号是1,个,该猴子就要离开此圈,这N的顺序围坐一圈,从第1开始数,每数到第1-m 样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:m m,n m,n 输入数据:输入为整数,个数的方法,输出为大王的猴子个猴子,数n 输出形式:中文提示按照m ,建立一个函数来实现此功能是几号 )需求分析或功能描述(2。次数,passout=pass,为猴子编号out编号(为密码值)该猴子离圈,step+剩下的猴子继续次操作,直到次数step

15、=猴子monkey时结束。 开始 输入猴子的数量和密码值 密码值,猴子出列,次数自编号 N 猴子次= Y )详细设计或源代码说明(4。次数step+,(pass为密码值)该猴子离圈,为猴子编号out,编号out=pass monkey时结束。剩下的猴子继续次操作,直到次数step=猴子 int Monkey()实现了这一功能。函数 )程序模块及其接口描述(5out=pass编号out,=编号密码值 入队;为猴子编号运用队列(环形队列),。剩下的猴子继续次操作,直到次,该猴子离圈,次数step+(pass为密码值) 时结束。step=数猴子monkey 实现了这一功能。函数int Monkey(

16、) 6)程序的输入与输出描述(n密码值) 8)尚未解决的问题或改进方向( 不足:不能重复使用程序,如果数字大的话,输出繁琐。 )对软件的使用说明(9 用户只需根据软件界面的提示进行相关操作。 结论及体会三 ,队列,栈(先进后出)本学期,我学会了常用数据结构:数组(连续空间),堆(特,图(点、边),链表(指针)(先进先出),树(前驱、后继,根、叶子)顺序存储结构和链式存根节点的值最大或最小)还有线性表存储结构:殊的树, 储,常用的排序算法。分别实现了学生成绩管理系做了一个程序,Free自己用了在这一周里,C统、各种排序、有序表的合并、二叉树的建立及遍历以及猴子选大王,通过本次数据结构课程设计,我

17、学习了很多课上没弄懂的动西,巩固了关于二叉树、栈、 链表等知识。通过上网查找资料、但还是遇到种种难题,在设计程序时,虽然很用心的做,虽然最后的程序不是很完最终还是解决多数,图书馆查阅资料、问老师的方式, 美,但是因为是通过自己的努力完成的,还是感觉很满意,也收获很大东西。经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。在这一段努力学习的过程中,我的编程设计有了明显的提高,其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来

18、的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。总之,通过这次的课程设计,我们收获匪浅,首先由衷感谢老师提供这样的一个机会锻炼自己,感受到学来的知识不只是用来完成试卷的。一向习惯独立思考的自己学会了积极的与别人交流,取长补短,共同进步。课程设计使自己发现考试不是最重要的,最重要的是能运用所学的知识。在整个课程设计的学习过程中,不再是学到知识解题,而是在实际运用时遇到什么学什么,重在把知识应用于实际。附录1:参考文献 1 数据结构教程(第3版),李春葆,清华大学出版社,2010 2数据结构,杨剑,清华大学出版社,2011 3

19、数据结构(C语言版),严蔚敏 吴伟民,清华大学出版社,1997 4Data Structures Using C数据结构(C语言版),R Krishnamoorthy、G Indirani Kumaravel,清华大学出版社,2009-9 5C+数据结构与程序设计 (美)Robert L.Kruse/Alexander J.Ryba著/钱丽萍译, 清华大学出版社,2004 6计算机算法设计与分析(第2版),王晓东, 电子工业出版社, 2004 附录2:部分源代码清单 #include malloc.h#includeiostreamstdlib.h#define LEN sizeof(Link

20、List) #define MaxSize 50 /* /成绩管理系统 typedef struct LNode /*定义单链表结点类型*/ /姓名 char name10; char num10; / 学号 int score3; struct LNode *next; LinkList;LinkList *init() return NULL; /*返回空指针*/ int i,s,k; int j=0;LinkList *head=NULL,*p; /* 定义函数 .此函数带回一个指向链表头的指针*/ system(cls);printf(请输入您想输入的学生个数: );scanf(%d,

21、&k);for(j=0;jnum);牰湩晴尨输入姓名 :name);牰湩晴尨请分别输入语文、数学、英语的分数 %d scoresn,3);/*开始输入 for(i=0;iscorei);if(p-scoreiscorei100) /* 确保成绩在0100之间 */ printf(Data error,please enter again.n);while(p-100);*/ 将头结点做为新输入结点的后继结点 /* p-next=head; 新输入结点为新的头结点 /* head=p;return(head);/* 显示全部记录函数*/ void print(LinkList *head) Li

22、nkList *p; p=head; /*初值为头指针*/ *LinkList*n);printf(-n); printf(| 学号 | 姓名 | 语文 | 数学 | 英语 | n);while(p!=NULL) printf(| %4s | %-4s | = | = | = |n, p-num,p-name,p-score0,p-score1,p-score2); p=p-next; printf(*END*n);/*删除记录函数LinkList *Delete(LinkList *head) */ 为查找到要删除的结点指针,p2为其前驱指针LinkList *p1,*p2; /*p1*/

23、,c用来输入字母/*s6 用来存放学号 char c,s6; system(cls); 牰湩晴尨请输入要删除的学生的学号 scanf(%s,s);赋初值头指针/*给p1和p2 p1=p2=head;当记录的学号不是要找 /* while(strcmp(p1-num,s) & p1 != NULL) 的,或指针不为空时*/ p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/ p1=p1- /*将p1指针指向下一条记录*/ if(strcmp(p1-num,s)=0) /*学号找到了*/ printf(*FOUND*n); printf(-n);printf(| 学号 | 姓名 | 语文 | 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1