标签:mamicode image inf max ISE auto 技术 深度优先遍历 display
访问B结点,将B结点出队,同时将与B结点相邻接,且还未被访问过的顶点C,I,G入队
1 bool visited[MaxVertexNum]; //访问标记数组 2 //邻接矩阵的广度遍历算法 3 void BFSTraverse(MGraph G) 4 { 5 Queue Q; //辅助队列 6 for (int i = 0; i < G.vexnum; i++) 7 { 8 visited[i] = false; //访问标记数组初始化 9 } 10 InitQueue(Q); //初始化辅助队列 11 for (int i = 0; i < G.vexnum; i++) //从0号顶点开始遍历 12 if (!visited[i]) //对每个连通分量调用一次BFS 13 BFS(G, i); //Vi未访问过,从Vi开始BFS 14 } 15 16 void BFS(MGraph G, int v) 17 { 18 //从顶点v出发,广度优先遍历图G,算法借助一个辅助队列Q 19 visit(v); //访问结点v 20 visited[v] = true; //对v做访问标记 21 Enqueue(Q, v); //顶点v入队列 22 while (!isEmpty(Q)) 23 { 24 Dequeue(Q, v); //顶点v出队 25 for (int w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w))//检测v所有的邻接点 26 { 27 if (!visited[w]) //w为v还未访问过的邻接结点 28 { 29 visit(w); //访问顶点w 30 visited[w] = true; //对顶点w做访问标记 31 Enqueue(Q, w); //将顶点w入队 32 } 33 } 34 } 35 }
1 /*深度优先遍历算法*/ 2 bool visited[MaxVertexNum]; //访问标记数组 3 void DFSTraverse(MGraph G) 4 { 5 for (int v = 0; v < G.vexnum; ++v) 6 visited[v] = false; //初始化访问标记数组 7 for (int v = 0; v < G.vexnum; ++v) //从顶点0开始遍历 8 { 9 if (!visited[v]) //顶点v还问访问过,则访问 10 DFS(G, v); 11 } 12 } 13 14 void DFS(MGraph G, int v) 15 { 16 //从顶点v出发,采用递归思想,深度优先遍历图 17 visit(v); 18 visited[v] = true; 19 for (int w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w))//检测v所有的邻接点 20 if (!visited[w]) 21 { 22 DFS(G, w); 23 } 24 }
标签:mamicode image inf max ISE auto 技术 深度优先遍历 display
原文地址:https://www.cnblogs.com/KBryant/p/11617232.html