数据结构课设之图Word文件下载.docx
《数据结构课设之图Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课设之图Word文件下载.docx(65页珍藏版)》请在冰豆网上搜索。
要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。
一.设计目的
1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2.提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5.培养根据选题需要选择学习书籍,查阅文献资料的自学能力。
二.设计任务
设计一个基于DOS菜单的应用程序。
要利用多级菜单实现各种功能。
内容如下:
1.无向图的基本操作及应用
1创建无向图的邻接矩阵
2创建无向图的邻接表
3无向图的深度优先遍历
4无向图的广度优先遍历
2.无向网的基本操作及应用
1创建无向网的邻接矩阵
2创建无向网的邻接表
3求最小生成树
3.有向图的基本操作及应用
1创建有向图的邻接矩阵
2创建有向图的邻接表
3拓扑排序
4.有向网的基本操作及应用
1创建有向网的邻接矩阵
2创建有向网的邻接表
3关键路径
4单源最短路径
5每对顶点之间的最短路径
三.设计指导
第一步:
根据设计任务,设计DOS菜单。
例如
选择1之后应该类似于
第二步:
设计菜单
voidShowMainMenu()
{
cout<
<
"
\n"
;
***************图的基本操作及应用******************\n"
*1无向图的基本操作及应用*\n"
*2无向网的基本操作及应用*\n"
*3有向图的基本操作及应用*\n"
*4有向网的基本操作及应用*\n"
*5退出*\n"
***************************************************\n"
}
voidUDG()
MGraphMG;
ALGraphALG;
intn;
do
{
cout<
***************无向图的基本操作及应用***************\n"
*1创建无向图的邻接矩阵*\n"
*2创建无向图的邻接表*\n"
*3无向图的深度优先遍历*\n"
*4无向图的广度优先遍历*\n"
****************************************************\n"
cin>
>
n;
switch(n){
case1:
CreatUDG_M(MG);
break;
case2:
CreatUDG_ALG(ALG);
dispgraph(ALG);
case3:
case4:
default:
if(n!
=5)
cout<
错误,重新输入\n"
}
}while(n!
=5);
voidUDN()
MGraphMN;
ALGraphALN;
do{
***************无向网的基本操作及应用***************\n"
*1创建无向网的邻接矩阵*\n"
*2创建无向网的邻接表*\n"
*3prim算法求最小生成树*\n"
*4kraskal算法求最小生成树*\n"
CreatUDN_M(MN);
CreatUDN_ALG(ALN);
dispgraph_N(ALN);
voidDG()
***************有向图的基本操作及应用***************\n"
*1创建有向图的邻接矩阵*\n"
*2创建有向图的邻接表*\n"
*3拓扑排序*\n"
*4退出*\n"
=4)
=4);
voidDN()
***************有向网的基本操作及应用***************\n"
*1创建有向网的邻接矩阵*\n"
*2创建有向网的邻接表*\n"
*3关键路径*\n"
*4单源顶点最短路径问题*\n"
*5每对顶点间最短路径问题*\n"
*6退出*\n"
case5:
=6)
=6);
voidmain()
ShowMainMenu();
UDG();
UDN();
DG();
DN();
无论多少级菜单,都可以用这种模式实现,并且当前菜单不用担心前面的问题,只需编写当前的功能函数。
第三步:
添加功能函数。
四.成绩评定
实习报告(文字不得少于4000字)
1.设计方案;
//每个算法的来历,优点
2.实现过程;
//框架之间是怎样连接的,怎么实现的
3.测试;
//输入什么,得到什么
4.使用说明;
//如何输入输出
5.难点与收获;
6.实现代码;
7.可改进的地方。
程序实现
1.完成基本结构图,程序中有三级菜单,完成基本操作者及格;
2.在第一条的基础上,任务完成的越多,成绩等级越高。
成绩由三部分组成:
平时考核(20%)、程序实现(50%)、实习报告(30%)
实习报告
前言
首先,我要感谢周老师、冯老师和其他帮助我完成这份实习报告的老师们,如果不是你们的帮助,我很难在这六天里完成这份艰巨的任务。
图是一种比线性表和树更为复杂的数据结构。
在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都有可能相关。
因此图的应用极为广泛,特别是近年来的迅速发展,已渗入诸如语言学、逻辑学、物理、化学、电讯工程、计算机科学以及数学的其他分支中。
要学好图这一章并熟练运用对我来说非常的困难,在这之前,必须学好《离散数学》中的图的理论,熟练掌握线性表的基本操作和应用,以及栈和队列还有树的相关知识。
限于这几章学得并不好,理解的也不透彻,所以在做课程设计时困难重重。
尽管遇到很多问题,但在这六天的不懈努力下,终于完成了。
为此,我简要介绍一下我所使用的工具和资料。
编译器:
vc6.0和vs8.0(vc2008);
电脑:
学校机房和自己的;
资料:
《数据结构(C语言版)》(严蔚敏吴伟民编著)和《数据结构》算法实现及解析(高一凡编著),互联网。
再次衷心的感谢帮助我老师们和同学们!
一:
实现方案
按照要求,需要设计四种图,两种数据存储结构,十六中基本操作及应用,三层以上的显示菜单。
图的操作中又包含有有关线性表、栈和队列的基本操作。
由于显示菜单已给出,剩下的只是把函数写入其中,而线性表、栈和队列的基本操作并不复杂,很容易实现,我们只有完成图的相关操作即可。
图的操作都是以两种存储结构为基础的,邻接矩阵存储结构和邻接表存储结构,如四种图(有向图,有向网,无向图,无向网)的创建,其他的操作都是在四种图创建后才开始进行的。
所以,首先必须理解两种存储结构的定义。
图的邻接矩阵存储结构即图的数组表示法。
用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。
用邻接矩阵存储结构的图具有以下几点特征:
(一):
顶点数:
vexnum,边(弧)数:
arcnum,图的种类:
kind;
(二):
邻接矩阵:
arcs(1顶点关系类型:
adj2相关信息:
*info);
(三):
顶点向量(顶点名):
vexs[];
其优点是以二维数组表示有n个顶点的图时,需存放n顶