数据结构大作业题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构大作业
专业:
班级:
题目:
学生姓名:
(课程设计报告撰写的基本要求)
题目(三号,黑体,居中)
(空一行)
一、任务与目标(标题均为小三号,宋体)
(正文均为小四号,宋体,行距1.5倍)
(这一部分需简单介绍题目内容,即该题目到底要做什么。如果涉及明确的算法,最好再简单介绍一下算法产生的背景,还要列出各项本设计要达到的具体的目标。)
二、方案设计与论证
(对目标进行总体分析,说明要采用的基本思路,说明遇到的问题和解决方法。说明完成本次课程设计的完整过程。要描述程序的设计思想,重点描述你自己提出的与已有工作不同的程序设计思想。)
三、算法说明
(这一部分需详细描述解决问题所需要用到的算法和重要的数据结构,即该课程设计到底应该怎么做。
基本要求:处理问题中所用到的关键算法都要描述清楚,而不是仅描述主函数。算法和数据结构可用伪码和图示描述,不要只写源代码和注释。这一部分的目的是让读者在短时间内清楚地理解作者解决问题的整体思路,表达方式必须比源代码更通俗易懂。如果读者感觉还不如直接读源代码来得明白,这一部分内容就失去了意义。)
四、全部源程序清单
(给出本次大作业所编写全部源程序已经调试好的可运行代码清单,字体可以用宋体五号,页数可增加,每个程序开头用注释文字说明此程序的用途和大体工作过程,,程序中必要部分也要加入足够多的注释行。)
五、程序运行的测试与分析
(这一部分内容需要紧扣课程设计的题目类型和要求,设计提供相应的测试方法和结果。这部分包括运行图。
对于需要比较不同算法性能优劣的题目,应设计并填写一张性能比较表格,列出不同算法在同一指标下的性能表现。仅仅罗列出一堆数据是不够的,还应将数字转化为图形、曲线等方式,帮助读者更直观地理解测试结果。
对于需要利用某算法解决某问题的题目,应设计并填写一张测试用例表。每个测试用例一般应包括下列内容:
·测试输入:设计一组输入数据;
·测试目的:设计该输入的目的在于测试程序在哪方面可能存在漏洞;
·正确输出:对应该输入,若程序正确,应该输出的内容;
·实际输出:该数据输入后,实际测试得到的输出内容;
·错误原因:如果实际输出与正确输出不符,需分析产生错误的可能原因;
·当前状态:分为“通过”(实际输出与正确输出相符)、“已改正’’(实际输出与正确输出不符,但现在已修改正确)、“待修改”(实际输出与正确输出不符,且尚未改正)三种状态。
需要注意的是,测试员的态度,不是提供几组简单的数据让程序员容易通过,从而宣称该程序是正确的;而应该是千方百计设计“刁难”的数据,想办法让所测试的程序暴露出问题,这样才能真正帮助程序员完成正确的程序,最后通过严格的裁判数据测试。)
六、结论与心得
(主要说明程序调试中发现的问题和解决办法,包括你学到了什么,哪里遇到了困难,解决的办法,可能但因时间关系没有来得及完成的想法,今后的目标等。)
七、参考资料
(用五号,宋体,按照规范格式列出。)
(要列出在完成设计中查看过并有所利用的所有参考资料,包括各类技术书籍、期刊论文和相关网页的网址。注意你看过但没有利用的资料不要列入,要能够回答你列出资料中的相关问题。)
附录:供选择的数据结构大作业题目
可选题目:
1.散列法的实验研究 (4)
2.学生搭配问题 (4)
3.二叉排序树的实现 (5)
4.利用栈求表达式的值 (5)
5.走迷宫游戏 (5)
6.稀疏矩阵实现与应用 (6)
7.图的遍历和生成树求解实现 (6)
8.排序综合 (6)
9.纸牌游戏 (6)
10.停车场问题 (6)
11.哈夫曼编码/译码器 (7)
12.关键路径问题 (7)
1.散列法的实验研究
基本要求:
1、设每个记录有下列数据项:电话号码、用户名、地址;
2、从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
3、采用一定的方法解决冲突;
4、查找并显示给定电话号码的记录;
5、查找并显示给定用户名的记录。
进一步完成内容:
1、设计不同的散列函数,比较冲突率;
2、在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变
化。
2.学生搭配问题
一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.
请设计一系统模拟动态地显示出上述过程,要求如下:
1、输出每曲配对情况
2、计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.
至少求出K的两个值.
3、尽量设计出多种算法及程序
4、提示:用队列来解决比较方便.
3.二叉排序树的实现
用顺序和二叉链表作存储结构
1) 以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T;
2) 对二叉排序树T作中序遍历,输出结果;
3) 输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;
4.利用栈求表达式的值
编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。
主要功能描述如下:
1、从键盘上输入表达式。
2、分析该表达式是否合法:
(1)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。
(2)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。(3)若是其它字符,则返回错误信息。
3、若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。
程序中应主要包含下面几个功能函数:
void initstack():初始化堆栈
int Make_str():语法检查并计算
int push_operate(int operate):将操作码压入堆栈
int push_num(double num):将操作数压入堆栈
int procede(int operate):处理操作码
int change_opnd(int operate):将字符型操作码转换成优先级
int push_opnd(int operate):将操作码压入堆栈
int pop_opnd():将操作码弹出堆栈
int caculate(int cur_opnd):简单计算+,-,*,/
double pop_num():弹出操作数
5.走迷宫游戏
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:
老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
迷宫的墙足够结实,老鼠不能穿墙而过;
正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;