计算机软件技术基础课程设计 图的遍历的演示 龚陈继 Pag e 1 o f 18 题5
3 图遍历的演示 实习报告 题目:试设计一个程序,演示在连通的无向图上访问全部结点的操作 一、需求分析 1、以邻接多重表为存储结构; 2、实现连通和非连通的无向图的深度优先和广度优先遍历; 3、要求利用栈实现无向图的深度优先遍历; 4、以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和生成树的边集; 5、用凹入表打印生成树; 6、求出从一个结点到另外一个结点,但不经过另外一个指定结点的所有简单路径; 6、本程序用 C++语言编写,在Visial C++ 6
0环境下通过
二、概要设计 1、设定图的抽象数据类型: ADT Graph{ 数据对象 V:V 是具有相同特性的数据元素的集合,称为点集
数据关系R: R={VR} VR={(v,w)|v,w 属于V,(v,w)表示v 和 w 之间存在的路径} 基本操作P: CreatGraph(&G,V,VR) 初始条件:V 是图的顶点集,VR 是图中弧的集合
操作结果:按V 和 VR 是定义构造图G
DestroyGraph(&G) 初始条件:图G 存在 操作结果:销毁图G LocateVex(G,u) 初始条件: 图G 存在,u 和 G 中顶点有相同的特征 操作结果:若图G 中存在顶点u,则返回该顶点在图中的位置;否则返回其他 信 息 GetVex(G,v) 初始条件: 图G 存在,v 是 G 中顶点 操作结果:返回v 的值 FirstAjvex(G,v) 初始条件: 图G 存在,v 是 G 中顶点 操作结果:返回v 的第 一个邻接顶点,若顶在图中没 有邻接顶点,则返回为空 NextAjvex(G,v,w) 初始条件: 图G 存在,v 是 G 中顶点,w 是 v 的邻接顶点 操作结果:返回v 的下一个邻接顶点,若w 是 v 的最