设 图 G 是用邻接矩阵存储的,以下是一个从顶点 V i 出发广度优先遍历图的算法。 void BFSTraverse(MGraph G,Status(*Visit)(int v)) { // 对以数组存储表示的图 G 进行广度优先搜索遍历 bool visited[G.vexnum]; // 附设访问标识数组 Queue Q; // 附设队列 Q for (v=0; v InitQueue(Q); // 设置空队列 Q for ( v=0; v< ( 1 ) ; ++v ) if ( ( 2 ) ) { // 从每一个未被访问的顶点出发进行广度优先搜索 visited[v] = TRUE; Visit ( ( 3 ) ); // 访问图中第 v 个顶点 EnQueue(Q, v); // v 入队列 while (!QueueEmpty(Q)) { DeQueue(Q, u); // 队头元素出队并置为 u for ( w=0; w if ( G.arcs[u, w].adj && ( 4 ) ) { visited[w] = TRUE; Visit(w); // 访问图中第 w 个顶点 EnQueue(Q, w); // 当前访问的顶点 w 入队列 Q } // if } // while } // if DestroyQueue(Q); } // BFSTraverse