1、 1 目录目录 一、课题的主要功能 2 1.1 设计内容 2 1.2 对课程设计功能的需求分析 .2 二、课题的功能模块的划分.2 2.1 模块划分 2 2.2 系统的概要设计 .3 三、主要功能的实现 4 3.1 算法思想 4 1.图的邻接矩阵的建立 .4 2.图的遍历的实现 .4 3.2 数据结构 4 3.3 主函数流程图.5 3.4 深度优先遍历流程图 .6 3.5 深度优先遍历递归 .7 3.6 深度优先遍历流程图 .9 3.7 广度优先遍历递归流程图 10 四、程序调试 .11 4.1 程序的调试分析 11 4.2 程序的测试结果 11 五、总结 15 六、附件 16 6.1 源程序
2、 16 2 一、课题的主要功能 1.1 设计内容设计内容 演示图的深度优先, 广度优先遍历过程,并输出原图结构及遍历结果。要求图的结 点数不能少于 6 个。可以由系统随机生成图,也可以由用户手动输入图。报告中要写出 画图的思路;画出图的结构,有兴趣的同学可以进一步改进图的效果。 1.2 对课程设计功能的需求分析对课程设计功能的需求分析 图的遍历并不需要是一个过于复杂的工作环境,一般来说:最合适的才是最好的。 软件设计必须符合我们使用实际情况的需要。根据要求,图的遍历主要功能如下: 1.用户可以随时建立一个有向图或无向图; 2.用户可以根据自己的需要,对图进行深度遍历或广度遍历; 3.用户可以根
3、据自己的需要对图进行修改; 4 4. .在整个程序中,用户可以不断的按照不同的方式对图进行遍历,若不继续,用户也 可以随时跳出程序,同时,如果用户输入的序号错误,程序会提示用户重新输入序号; 二、课题的功能模块的划分 2.2.1 1 模块划分模块划分 1.1.队列的初始化、进队、出队、队列空、队列满的函数队列的初始化、进队、出队、队列空、队列满的函数 void InitQueue(CirQueue *Q) /初始化队列 int QueueEmpty(CirQueue *Q)/队列是否为空 int QueueFull(CirQueue *Q)/队列满 Void EnQueue(CirQueue
4、*Q,int x)/将队员进队 int DeQueue(CirQueue *Q)/将队员出队 2.2.创建图创建图的函数的函数 void CreateMGraph(MGraph *G)/根据用户需要创建一个图 3 3. .图的深度优先遍历递归图的深度优先遍历递归 void DFSM(MGraph *G,int i)/*含有输出已访问的顶点的语句*/ 3 4.4.图的广度优先遍历递归图的广度优先遍历递归 void BFSM(MGraph *G,int k) /*含有输出已访问的顶点的语句*/ 5.5.深度优先遍历深度优先遍历 void DFSTraverseM(MGraph *G)/*调用 DFSM 函数*/ 6 6. .广度优先遍历广度优先遍历 void BFSTraverseM(MGraph *G) /*调用 BFSM 函数*/ 7 7. .主函数主函数 main() /*包含一些调用和控制语句*/ 2.2 系统的概要设计系统的概要设计 开开 始始 信息信息录入录入 菜单选择菜单选择 深深 度度 优优 先先 修修 改改 信信 息息 广广 度度 优优 先