void BFSTraverse ( Graph G, Status ( *Visit ) ( int v ) ) {/*按广度优先非递归遍历图G。使用辅助队列Q 和访问标志数组visited*/ for ( v=0; v<G,vexnum; ++v ) visited[v]=FALSE InitQueue ( Q ); /*置空的国债队列Q*/ if ( !visited[v] ) /*v 尚未访问*/ { EnQucue ( Q,v ); /*v 入队列*/ while ( !QueueEmpty ( Q ) ) { DeQueue ( Q,u ); /*队头元素出队并置为u*/ visited[u]=TRUE; visit ( u ); /*访问u*/ for ( w=FistAdjVex ( G,u ); w; w=NextAdjVex ( G,u,w ) ) if ( !visited[w] ) EnQueue ( Q,w ); /*u 的尚未访问的邻接顶点w 入队列Q*/ } } }/*BFSTraverse*/