图的遍历—BFS(广度优先搜索算法)

 1 //广度优先搜索算法
 2 #define MAX_VERTEX_NUM 100
 3 bool visited[MAX_VERTEX_NUM];               //访问标记数组
 4 
 5 void BFSTraverse(Graph G){
 6     //本算法用于对图G进行光度优先遍历
 7     for(int i = 0; i < G.vexnum; i++)       //访问标记数组初始化
 8         visited[i] = false;
 9     InitQueue(Q);                           //初始化辅助队列Q
10     for(i = 0; i < G.vexnuml i++)           //从零号顶点开始遍历
11         if(!visited[i])
12             BFS(G,i);
13 }
14 void BFS(Graph G, int v){
15     //从顶点v出发,广度优先便利图G
16     visit(v);                               //访问初始定点v
17     visited[v] = true;                      //对v做已访问标记
18     Enqueue(Q,v);                           //顶点v入队Q
19     while(!isEmpty(Q)){
20         Dequeue(Q,v);                       //顶点v出队
21         for(w = FirstNeighbor(G,v); w >= 0; w = NextNeighbor(G,v,w)){
22             //检测v所有邻接结点
23             if(!visited[w]){                //w尚未被访问
24                 visit(w);                   //访问w
25                 visited[w] = true;          //对顶点w做访问标记
26                 EnQueue(Q,w);               //顶点w入队
27             }
28         }
29     }
30 }

 

posted @ 2021-11-28 17:18  某科学的撒把豆子  阅读(57)  评论(0)    收藏  举报