天天看点

数据结构实践项目——图的基本运算及遍历操作

0701 图结构导学

0702 图的定义

0703 图的基本术语

0704 图的邻接矩阵存储结构及算法

0705 图的邻接表存储结构及算法

0706 图的遍历

0707 非连通图的遍历

0708 dfs的应用

0709 bfs的应用

定义图的邻接矩阵和邻接表存储结构,实现其基本运算,并完成测试。

要求:

1、头文件graph.h中定义相关的数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:

2、在graph.cpp中实现这些函数

3、用main.cpp中的main函数中完成测试。

  假设图g采用邻接表存储,分别设计实现以下要求的算法:

  (1)输出出图g中每个顶点的出度;

  (2)求出图g中出度最大的一个顶点,输出该顶点编号;

  (3)计算图g中出度为0的顶点数;

  (4)判断图g中是否存在边<i,j>。

  利用下图作为测试用图,输出结果。

  

数据结构实践项目——图的基本运算及遍历操作

<a href="http://blog.csdn.net/sxhelijian/article/details/49717317">参考解答</a>

  实现图遍历算法,分别输出如下图结构的深度优先(dfs)遍历序列和广度优先遍历(bfs)序列。

数据结构实践项目——图的基本运算及遍历操作

  假设图g采用邻接表存储,分别设计实现以下要求的算法,要求用区别于示例中的图进行多次测试,通过观察输出值,掌握相关问题的处理方法。

  (1)设计一个算法,判断顶点u到v是否有简单路径

  (2)设计一个算法输出图g中从顶点u到v的一条简单路径(设计测试图时,保证图g中从顶点u到v至少有一条简单路径)。

  (3)输出从顶点u到v的所有简单路径。

  (4)输出图g中从顶点u到v的长度为s的所有简单路径。

  (5)求图中通过某顶点k的所有简单回路(若存在)

  (6)求不带权连通图g中从顶点u到顶点v的一条最短路径。

  (7)求不带权连通图g中,距离顶点v最远的顶点k

  设计一个程序,采用深度优先遍历算法的思路,解决迷宫问题。

  (1)建立迷宫对应的图数据结构,并建立其邻接表表示。

  (2)采用深度优先遍历的思路设计算法,输出从入口(1,1)点到出口(m,n)的所有迷宫路径。

1、设图的邻接矩阵为

数据结构实践项目——图的基本运算及遍历操作

,则该图为__。

a. 有向图

b. 无向图

c. 强连通图

d. 完全图

2、已知一个图,如图1所示,则从顶点a出发按深度优先遍历则可以得到的一种顶点序列为__。

a. a,b,e,c,d,f

b. a,c,f,e,b,d

c. a,e,b,c,f,d

d. a,e,d,f,c,b

数据结构实践项目——图的基本运算及遍历操作

(图1)

3、画出图1的邻接矩阵和邻接表存储的示意图。

4、已知图的邻接矩阵如图2所示,则从顶点0出发,按深度优先遍历的顶点序列是_。

数据结构实践项目——图的基本运算及遍历操作

(图2)

a. 0 2 4 3 1 5 6

b. 0 1 3 5 6 4 2

c. 0 4 2 3 1 6 5

d. 0 1 3 4 2 5 6

5、已知图的邻接矩阵如图2,根据算法,则从顶点0出发,按广度优先遍历的结点序列是_

a 0 2 4 3 1 6 5

c. 0 1 2 3 4 6 5

d. 0 1 2 3 4 5 6

6、已知图的邻接表如图3所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是_

数据结构实践项目——图的基本运算及遍历操作

(图3)

a. 0 1 3 2

b. 0 2 3 1

c. 0 3 2 1

d. 0 1 2 3

7、已知图的邻接表如图3所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是_

a. 0 3 2 1

b. 0 1 2 3

c. 0 1 3 2

d. 0 3 1 2

继续阅读