数据结构课程设计大纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计任务书
课程名称:数据结构
课程设计时间:1周
适用专业层次:计算机(本科)
一、设计目的:
通过课程设计,主要达到以下目的:
1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、设计要求:
从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:
1.最多3人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须独立完成课程设计,不能相互抄袭,不同组者文档不能相同;
2.设计完成后,将所完成的工作交由老师检查;
3.要求写出一份详细的设计报告(课程设计说明书)。
三、设计方法:
1. 问题分析和任务定义
根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?
2. 逻辑设计
对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并给出模块之间的调用关系。
3. 详细设计
定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据存储结构的类型定义,写出函数形式
的算法框架。
4. 程序编码
把详细设计的结果进一步求精为程序设计语言程序。
程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释,使程序中逻辑概念清楚。
5. 调试与测试
采用自底向上,分模块进行,即先调试低层函数。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;
6.编写课程设计报告
四、课程设计报告要求
1、需求分析:
在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么?以及限制条件是什么?
1.1问题描述
需要解决的问题,及完成功能等。
1.2基本要求
(1) 输入的形式和输入值的范围;
(2) 输出的形式;
(3) 程序所能达到的功能;
2、概要设计
说明本程序中用到的所有抽象数据类型的定义。
主程序的流程以及各程序模块之间的层次(调用)关系。
数据结构、程序模块、各模块之间的调用关系以及算法设计
3、详细设计
实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输
入高级程序设计语言程序);写出出函数和过程的调用关系.
4、测试与分析
测试数据,输出测试的结果,这里的测试数据应该完整和严格。
并对结果进行分析。
5、总结
总结可以包括 : 课程设计过程的收获、遇到问题、解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
6、附录:源程序清单
五、提交的资料
1、课程设计说明书
有关的分析设计文档要求全部写在学校统一制定的课程设计纸上。
2.提交时间:
六、课程设计考核方式
1、根据学生提交的设计方案、软件质量、绘制图纸(制作实物)、设计报告(说明书)和设计质量,参考学生出勤情况、工作态度、文明作风等,按优秀、良好、中等、及格和不及格五级计分。
2、课程设计的成绩分为:优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60-69分),不及格(59分以下)五个等级。
七、注意事项
1.严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。
2.1-3人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须在说明书中注明自己在小组中的分工,同组者可以一起交一份设计报告(说明书)。
课题一、算术表达式求值(参照教材p52)
设计一个程序,使用栈方法求解算术表达式:
支持整数的加减乘除运算;
支持括号运算;
输入算数表达式,对算术表达式给出栈的变化过程,并最后给出运算结果。
课题二、迷宫问题(参照教材p50)
设计一10*10的迷宫,使用栈方法对其求解,输出从入口到出口的路径。
用合理的数据结构表达迷宫格局;
按步进行探索,输出探索方向和栈变化情况;
输出入口到出口的路径,如果不存在这条路径,给出提示。
课题三、5*5棋局问题(参照教材p1)
在5*5棋盘上实现“三子棋”人机对弈(当有3颗己方棋子落到同一条横线、竖线、或斜线上,则己方获胜):
使用合理的数据结构表达“棋局”;
使用合理的方式表达“人”的落棋,即输入,然后计算机给出自己这一步的落棋,然后等待“人”落棋;
使用树结构存储各种棋局的各种变化,计算并输出各种落棋的胜利概率,使用胜率最大的落棋;
课题四、简单行编辑程序(参照教材p49)
使用栈结构建立输入缓冲区,逐行存入用户数据区:
允许用户输入出错,并在输入出错时及时更正;
使用“#”充当退格符,标识前一个字符无效;
使用“@”充当退行符,表示当前行的字符均无效;
使用“^”充当全文结束符;
实时显示用户输入情况现状,并在全文结束时输出用户全文
课题五、哈夫曼编\译码器
设计一个利用哈夫曼算法的编码和译码系统,字符频度表如下:
编码器:对输入的英文句子(只含以上26个字母以及空格,如I LOVE THIS WORLD)进哈夫曼编码,输出编码;
译码器:输入哈夫曼编码,还原原来输入的英文句子
课题六、实现串的模式匹配的KMP算法(难度稍高,p80)
对于任何输入串A,实现算法求next函数值;
利用next函数值,实现串A在串B中的定位
课题七、实现字符串的基本操作
完成如下功能:
(1)插入子串(2)取子串(3)串连接(4)查找子串的位置
输入字符串,完成以上功能;
自行设计串存储结构和算法;
自行设计参数输入方法和结果输出方法(建议使用命令行)
课题八、内部排序算法的实现
输入N个随机整数,对这些数进行多种方法进行排序。
至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起
泡排序、快速排序、选择排序、堆排序、归并排序);
每种排序算法应打印必要的中间结果;
课题九、二叉树的建立和遍历
从命令行输入节点元素,使用先序(或中序、后序)建立二叉树;
使用先序方法遍历该二叉树;
使用中序方法遍历该二叉树;
使用后序方法遍历该二叉树;
输出各种遍历方法的输出结果
课题十、散列法的设计与实现
使用散列法实现电话号码查找系统:
设每条记录有下列数据项:电话号码、用户名、地址;
从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
使用一定的方法解决冲突;
查找并现实给定电话号码,或用户名的记录
假定哈希表长度为100
课题十一、汉诺塔问题
有三个柱子,编号A、B、C,在A柱上有n个圆盘,直径不同,按直径从大到小依次叠放在柱子上,要求:把A柱上的圆盘借助B柱移动到C柱。
每次移动一个,任何情况下保证大的在下,小的在上。
使用递归方法设计并实现该算法,输出搬动圆盘过程。
课题十二、图的深度优先遍历的实现
用一定的数据结构表示教材p168,图7.13(a)
对该图实现深度优先遍历算法
输出最后结果和必要的中间步骤
课题十三、图的广度优先遍历的实现
用一定的数据结构表示教材p168,图7.13(a)
对该图实现广度优先遍历算法
输出最后结果和必要的中间步骤
课题十四、用普里姆算法实现最小生成树算法
用一定的数据结构表示教材p174,图7.16(a)
对该图用普里姆算法得到最小生成树
输出最后结果和必要的中间步骤,包括如图7.17的中间矩阵
课题十五、用克鲁斯卡尔算法实现最小生成树算法
用一定的数据结构表示教材p174,图7.16(a)
对该图用克鲁斯卡尔算法得到最小生成树
输出最后结果和必要的中间步骤
课题十六、用迪杰斯特拉算法实现最短路径算法
用一定的数据结构表示教材p188,图7.34
对该图使用迪杰斯特拉算法计算v0到其它各点的最短路径
输出最后结果(最短路径长度和路径节点)和必要的中间步骤,包括如p190的中间矩阵课题十七、实现循环队列的基本操作(p64)
用数组做基本存储结构实现循环队列的基本操作
包括:队列初始化、求队列长度、入队列、出队列
算法有一定的容错性,对错误输入能报错,不能出现运行错误
自行设计测试用例
课题十八、实现链表的基本操作
使用链式存储结构实现链表的基本操作
定义合理的数据结构,实现初始化、插入、删除、查找等基本操作算法有一定的容错性,对错误输入能报错,不能出现运行错误
自行设计测试用例。