图的遍历实现课程设计-数据结构-程序-图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计
设计说明书
图的遍历的实现
学生姓名英茜
学号1118064033 班级网络1101班
成绩
指导教师申静
数学与计算机科学学院
2014年1 月4日
课程设计任务书
2013—2014学年第一学期
课程设计名称:数据结构课程设计
课程设计题目:图的遍历实现
完成期限:自2013年12月23日至2014年1月4日共 2 周
设计内容:
1. 任务说明
(1)采用邻接表存储结构创建一个图;
(2)编程实现图的深度优先搜索(或广度优先搜索)遍历算法;
(3) 输出遍历结果;
(4) 给定具体数据调试程序。
2.要求
1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?
2)逻辑设计:写出抽象数据类型的定义,各个主要模块的算法,并画出模块之间的调用关系图;
3)详细设计:定义相应的存储结构并写出各函数的伪码算法。
4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。
5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。
6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算法的时间、空间复杂性分析;
7)编写课程设计报告。
3. 参考资料
指导教师:申静教研室负责人:余冬梅
课程设计评阅
摘要
针对图问题中如何更好地实现图的遍历问题,以无向图为例,分别采用广度优先遍历和深度优先遍历的算法实现对各节点的遍历,以VC++为开发环境进行系统的设计和实现,其运行结果表明,系统能很好地完成遍历后节点的输出,实现了遍历的目的,系统界面友好,可操作性强。
关键词:数据结构;存储结构;邻接矩阵
目录
一课题描述ﻩ1
二ﻩ设计目的与任务ﻩ错误!未定义书签。
2.1课程设计的目的................................................................................ 错误!未定义书签。
2.2课程设计的任务.............................................................................. 错误!未定义书签。三设计方案和实施ﻩ错误!未定义书签。
3.1总体设计ﻩ错误!未定义书签。
3.2基本操作............................................................................................ 错误!未定义书签。
3.3详细设计ﻩ错误!未定义书签。
四运行调试结果ﻩ6
五结论与致谢...............................................................................................................................9六ﻩ附录ﻩ11
一课题描述
数据结构是一门专业基础课,它对学习者的要求很明确:学会分析、研究计算机加工的数据结构的特性,以便为应用设计所需的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。其次,该课程的学习过程也是复杂程序设计的训练过程,要求学习者编写的程序结构或设计的程序结构体清楚、正确、易读,符合软件工程的规范。
图是一种较为复杂且重要的数据结构,其特殊性在于图形结构中结点之间的关系可以是任意的,图中任意两个数据元素之间都有可能相关。就本课程设计而言应用图论的知识讨论如何在计算机上实现图的遍历的操作,主要解决图的遍历的几种方法的实现。
本设计采用目前最通用的程序设计语言之一—C语言作为数据结构和算法的描述语言。
二设计目的与任务
2.1课程设计的目的
进一步的了解图的遍历的问题,图的DFS,BFS的递归和非递归算法的实现, 用无向图来实现图的遍历。
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
训练学生灵活应用所学数据结构的基本知识,熟练的完成问题分析、算法设计、编写程序,求解出指定的问题。
训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养严谨的科学态度和良好的工作作风。
提高综合运用所学的理论知识和方法独立分析和解决问题的能力。
2.2课程设计的任务
1)任务说明
用C/C++编写一个程序实现图的遍历的算法。
从键盘上输入一个图的基本信息(图用邻矩阵表示)。图的DFS,BFS的递归和非递归算法的实现;用有向图实现图的遍历;用无向图实现图的遍历;用邻接矩阵存储图;用邻接表存储图。
2)要求
1>首先输入图的结点数;
2>依次输入图的各条边(数据之间用空格隔开);
3>输出的形式:按用户选择的遍历方法给出遍历顺序,各字符间用->分隔;
4>程序所能达到的功能:能够按要求输出所要的结果。
三设计方案和实施
3.1总体设计
采用邻接矩阵作为图的存储结构。程序中主要用到以下抽象数据类型: 抽象数据类型的定义
typedef struct{
char*vexs;ﻩﻩﻩﻩﻩ//顶点向量
int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵
int vexnum,arcnum;ﻩﻩ//图的当前顶点数和弧数
}Graph;
3.2基本操作
CreateUDN(Graph&G)
操作结果:用邻接矩阵创建带权无向网图。
DFS(Graph G,intk)
操作结果:对已存在的图进行深度优先遍历。
BFS(GraphG)
操作结果:对已存在的图进行广度优先遍历。
choose(Graph G)
操作结果:对将要实现的操作步骤进行选择。
程序包含两个模块
主程序模块,其中主函数为
int main{
输入信息;
根据输入要求进行选择操作和输出;
输出结果;
}
选择操作模块—实现具体选择的对应操作及输出操作。
两模块之间关系如下图3.1所示