注:广度优先遍历和深度优先遍历 很重要
6.2 图的遍历
 广度优先遍历 BFS
bool visited[MAX_VERTEX_NUM]; //访问标记数组
 void BFSTraverse(Graph G){
 //对图G进行广度优先遍历,设访问函数为visit()
 for(i=0;i<G.vexnum,++i)
 visited[i]=false; //访问标记数组初始化
 InitQueue(Q); //初始化辅助队列Q
 for (int i = 0; i < G.vexnum; ++i)//从0号顶点遍历
 if(!visited[i]) //对每个连通分量调用一次BFS
 BFS(G,i); //Vi未访问过,从Vi开始BFS
 }
void BFS(Graph G,int v){
 //从顶点v出发,广度优先遍历图G,算法借助一个辅助队列Q
 visit(v); //访问初始顶点v
 visited[v]=true; //对v做已访问标记
 EnQueue(Q,v); //顶点v入队列
 while(!IsEmpty(Q)){
 DeQueue(Q,v); //顶点v出队列
 for (w=FirstNeighbor(G,v); w>=0;w=NextNeighbor(G,v,w))
 { //检测v所有邻接点
 if(!visited[w]){ //w为v的尚未访问的邻接顶点
 visit(w); //访问顶点w
 visited[w]=true; //对w做已访问标记
 EnQueue(Q,w); //顶点w入队列
 }//if
 }
 }//while
 }










