实验三 图的广度优先遍历和深度优先遍历算法的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三 图的广度优先遍历和深度优先遍历算法的设计

一、实验目的

本实验的目的是通过理解图的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。

二、实验内容

1.分别编写BFS 、DFS 算法。

2.判断无向图G 是否连通,若连通则返回1,否则返回0。

3.判断无向图G 是否是一棵树。若是树,返回1;否则返回0。 4.判断有向图中是否存在回路。

5.假设图G 采用邻接表存储,求距离顶点vO 的最短路径长度为k 的所有顶点,要求尽可能节省 时间。 三、实验类型

验证性

四、实验要求和提示

1.实验前充分预习实验指导书内容及相关理论知识内容:实验中严格遵守实验室规范和制度,认真完成实验内容并做好实验纪录:实验后必须按照要求独立完成实验报告。

2.以上6个题中,题1是必做题,题2—5可任意选作l 或2题。 3.提示:

(1)最好使用邻接表法建立无向图和有向图的存储结构,然后实现图的遍历。 (2)结点结构:

typedef struct node

{ int adjvex ; //邻接点域,存放与Vi 邻接的结点在表头数组中的位置 struct node * next ; //链域,指示下一条边或弧

)JD :

表头接点:

typedef struct tnode

{ int vexdata ;//存放顶点信息

struct node *firstarc ;//指示第一个邻接点

}TD ;

4.程序实现方面的提示:

(1)可采用遍历方式判断无向图是否连通。先给visited[]数组置初值O,然后从O 开始遍历该图,之后若所有顶点i的visited[i]均为1,则该图是连通的,否则不连通。

(2)一个无向图G是一棵树的条件是:G必须是无回路的连通图或者是有n—l条边的连通图(注:本题可以只给出算法)

(3)判断有向图中是否存在回路时,若一个有向图拓扑排序不成功,则一定存在回路;反之,若拓扑排序成功,则一定不存在回路。

(3)采用宽度优先搜索方法,找出第k层的所有顶点即为所求(宽度优先搜索保证找到的路径是最短路径)。X-fl:',qu[]为队列,qu[][0]存放顶点编号,qu[][1]存放当前顶点距离项点vO的最短路径。

五、实验报告

1.写出每个算法的思想。

2.画出算法流程图。

3.调试程序出现的问题及解决的方法。

4.打印实验报告及程序清单。

5.报告给出测试的结果并写出设计体会。

六、范例(略)

相关文档
最新文档