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