对于无向图,其广度优先搜索的算法思想如下:
1)
从图中某个顶点v出发,访问v,并置visited[v]的值为true,然后将v入队。
2)
只要队列不空,则重复下述过程
(1)
队头顶点u出队。
(2)
依次检查u的所有邻接点w,如果visited[w]的值为false,则访问w,并置visited[w]的值为true,然后将w入队。
下面是基于邻接矩阵表示的图的广度优先搜索算法,试补充完整。
#
define
MV
_
Num
3
00 //最大顶点数
#
define
Max
_
Int
65532
//表示极大值,即∞
typedef
char Vertex
_
Type; //假设顶点的数据类型为字符型
typedef
int Arc
_
Type; //假设边的权值类型为整型
typedef
struct
{
Vertex
_
Type vexs[MV
_
Num]; //顶点表
Arc
_
Type arcs[MV
_
Num][MV
_
Num]; //邻接矩阵
int vexnum,arcnum; //图的顶点数和边数
}AM
_
Graph;
void BFS
_
Traverse (AM
_
Graph G
R
)
{
for
( v=0; v< G
R
.vexnum; ++v )
visited[v]=FALSE;
;
InitQueue(Q); //置空的辅助队列Q
for ( v=0; v< G
R
.vexnum; ++v )
if
(
visited[v] = FALSE;
)
{
visited[v] = TRUE;
cout<