数据结构课程设计说明书文档格式.docx
- 文档编号:22056463
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:132.43KB
数据结构课程设计说明书文档格式.docx
《数据结构课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计说明书文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
参考文献12
前言
1.1设计背景和意义
1.1.1数据结构简介
数据结构是计算机程序设计的重要理论设计基础,它不仅是计算机学科的核心课程,而且成为其他理工专业的热门选修课。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
比如在计算机中央处理器中,CPU接到一个中断请求便会停下当前正在执行的指令去处理这个中断请求完成中断操作,首先要做的就是保护现场。
保护现场需要将下一条指令的地址指针和当前指令返回地址等重要的数据进行存储。
在众多的数据结构中,这些重要的数据被存储到栈这个数据结构中。
同时利用栈后进先出的特性,可以解决很多现实中的问题,做出自动化处理的软件。
1.1.2数据结构选择的重要性
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
并且选择一个好的数据结构类型,对于数据处理的能力及性能提高方面都是很重要的。
1.2设计的原理和内容
本次程序设计采用C语作为描述和实现算法的程序语言,主要的设计思路是利用数据结构模块化的思想,通过栈的特性实现表达式的读入、处理和输出正确结果,这些操作都是通过C语言程序来实现的。
最后的结果就是运行程序时能够完成对以上设计的操作,正确
的实现图的遍历。
工程概况
2.1项目所用的时间
从这个项目开始到结束总共历时十天。
完成于2011年12月31日。
2.2项目负责人
XXX,女,计算机科学与技术XX-X班,学生。
2.3项目指导人
XX,男,信息工程学院教师,讲师。
正文
图的遍历包括图的广度优先遍历与深度优先遍历。
对于广度优先遍历应利用队列的五种基本运算(置空队列、进队、出队、取对头元素、判队空)来实现。
首先建立一个空队列,从初始点出发进行访问,当被访问时入队,访问完出队。
并以队列是否为空作为循环控制条件。
对于深度优先遍历则采用递归或非递归算法来实现。
3.1设计的目的和意义
通过实践我们掌握《数据结构》中的知识。
对于《图的遍历》这一课题来说,所要求我们掌握的数据结构知识主要有:
图的存储结构、队列的基本运算实现、图的深度优先遍历实现、图的广度优先遍历算法实现。
对于我们学生来讲,此次课程设计是为了让我们训练自己的实际设计能力,通过设计时间,去真正获得此项目的基本训练和工作经验。
当代社会更需要的是理论扎实,动手实践能力强的大学生。
所以,本次课程设计的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。
为后继课程的学习打下坚实的基础。
3.2目标和总体方案
图的遍历:
图中某个顶点出发访问图中所有顶点,且使得每一顶点仅被访问一次,这个过程称为图的遍历。
图的遍历是从图中某个顶点出发,沿着某条搜索路径对图中其余每个顶点进行访问,并且使图中的每个顶点仅被访问一次的过程。
图的遍历是图运算中最重要的运算,也是图的基本运算之一,图的许多运算都是以遍历为基础的。
本次设计的目标是编写一个程序,完成对图的遍历。
于是特制订了一个总体的方案。
由于时间只有十天,故做了如下的计划安排,将这项工程分为两大部分:
程序的设计和程序的调试。
首先在程序的设计部分由分为几个步骤:
第一步:
查阅有关数据结构图的遍历操作的资料,用一天的时间。
第二步:
设计这个项目的整体架构和算法。
用一到两天的时间。
第三步:
选择一门程序设计语言进行算法的描述,两天的时间。
其次,进行程序的调试。
用一天。
3.3设计方法和内容
有了总体方案后必须用一个事半功倍的设计方法来提高程序设计的效率。
在这个项目的设计上,采用C语言模块化的思想,将程序的的功能划分为各个不同的模块,分部进行编写,调试。
下面将这个项目整体画分成了两个模块。
一个是功能函数模块群,主要实现设计方案中的具体功能,是整个项目的执行部分;
另一个是主函数模块,主要实现对数据流和控制流的控制以及表达式结果输出部分。
3.3.1硬件环境
微型计算机:
联想台式品牌机
中央处理器:
Pentuim4主频:
3.0GHz
主存容量:
512M
硬盘容量:
80G
3.3.2软件环境
WindowsXP操作系统
MicrosoftNotePad记事本程序
MicrosoftVisualC++编译器
3.3.3设计模块图
主流程图:
深度优先遍历流程图:
广度优先遍历流程图:
图1程序流程图
3.3.4设计内容
图中某个顶点出发访问图中所有顶点,且使得每一顶点仅被访问一次,这个过程称为图的遍历。
根据这一特性,实现图的遍历。
3.4程序的设计思想和内容
3.4.1程序设计的思想
BFS,广度优先搜索
先遍历离起点近的,再到远的,直至全图。
先遍历所有与起点距离为1的点,再到所有距离为2的点……
具体实现,需要一个队列进行辅助存储。
举个例,S为起点,S到A,B,C3个点相邻。
A又与A1,A2相邻,B与B1,B2相邻,C没有与其他点相邻。
对于遍历A发生的事情,就是“发现”了A1,A2。
但是,这是不能立即遍历A1,A2,这与BFS宗旨违背,必须先遍历B,C。
而又由于B,C肯定是比A1,A2先“发现”,这就体现了一种“先进先出”的性质,因而需要队列对为扩展的结点进行暂存
BFS()
{
queueq;
q.push(s);
//一开始的s点
while(q非空)
从q中取一元素
将该元素“发现”,而又未被进过q的结点入队
}
DFS,深度优先搜索
先选定一条路径,对路径上的点进行遍历。
然后,从路径的尽头开始,逐步回退,在每个分支再遍历其他路径及其上面的点。
具体实现,常写作递归,故可理解为通过栈辅助存储。
还是上面的距离,DFS出来的其中一种序列是S,A,A1,A2,B,B1,B2,C。
路径S,A,A1为第一选取的路径,然后回退,逐步选取其他分支,在A选取了A2作为第二路径,以此类推。
由于这样对每个点所做的操作就是“发现”,“遍历”与“回退”,操作种类相同,故常写作递归。
。
DFS(inttarget)
for(target的每个发现点)
DFS(该发现点)
//结束函数实际上就是回退的过程
赞同
3.4.2内容
#include<
iostream>
//#include<
malloc.h>
#defineINFINITY32767
#defineMAX_VEX20//最大顶点个数
#defineQUEUE_SIZE(MAX_VEX+1)//队列长度
usingnamespacestd;
bool*visited;
//访问标志数组
//图的邻接矩阵存储结构
typedefstruct{
char*vexs;
//顶点向量
intarcs[MAX_VEX][MAX_VEX];
//邻接矩阵
intvexnum,arcnum;
//图的当前顶点数和弧数
}Graph;
//队列类
3.4.3调试分析
1.首先用户首先看到的是运行的第一步,对用户的提示,请输入顶点数和弧数:
2.第二步,当用户输入顶点数和弧数后,界面就会有提示,请输入一定的顶点数
3.当输入顶点的数目和自己预定的数目相等的时候,程序会自动跳转到输入弧的项目,如下图所示:
4.按照规定的方法输入顶点之间的联通弧,并且输入他们之间的弧的数目,如下图所示:
3.5设计创新与关键技术
谈到设计创新,只能说在设计思路、设计方法和设计内容上有别人没有的东西。
而所用的技术倒是没有多少。
主要是运用了C语言丰富的表达能力,将图的遍历的操作形象的反应出来。
3.6结论
本次课程设计进展顺利,如期完成,并且达到了预先的设计要求,完全贯彻和执行了设计的总体方案。
对于图的遍历是比较成功的。
然而,这个程序设计中还有很多的不理想之处。
3.6.1存在的问题
一、由于技术方面及一些计算方法知识的欠缺,并不能实现其他的运算,只能对一般的表达式进行初步的运算。
二、程序中对于不匹配的的运算符,不能给出明确的错误提示。
3.6.2解决方案
一、针对程序设计中计算方法的知识欠缺问题,可以到互联网上求助高手和自己到图书馆查阅相关的书籍。
完成相关计算方法的补充。
二、针对图的遍历不能给出明确的提示,用返回一个不确定的值并输出表达式错误的文字提示,实现比较友好的提示。
参考文献
[1]严蔚敏.吴伟民编著.数据结构(C语言版).清华大学出版社.2006
[2]谭浩强编著.C程序设计.清华大学出版社.2005
[3]李廉治.姜文清.郭福顺《数据结构》.大连理工大学出版社.1989年
[4]李春葆.曾慧.张植民编著.数据结构程序设计题典.清华大学出版社.2002
[5]WilliamFord.WilliamTopp.《DataStructurewithC++》.清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)