(三)图的遍历 深度优先搜索 Boolean Visited[AX]; Status(*visitFunc)(intv); Void DFSTraverse(Graph GStatus (*Visit)(int V)){ VisitFunc=Visit; For(v=;v<Gvexnum;++v) visited[v]=FALSE; For(v=;v<gvexnum;++v) If(!visited[v]) DFS)gV); } Void DFS(Graph Gint v){ Visited[v]=true; visitFunc(v); for(w=FirstAdjVex(Gv);w>=;w=NextAdjVex(Gvw)) if(!visited[w]) DFS(Gw); } 广度优先搜索 void BFSTraverse(Graph GStatus (*Visit)(intv){ //按广度优先非递归遍历图使用队列Q和访问标志数组visited for(V=;v=Gvexnum;++v) visited[v]=false; InitQueue(Q); for(v=;v<Gvexnum;++V) if(!visited[v]){ visited[v]=TRUE; visit(v); ENQUEUE(Q<V); while(!QueueEmpty(Q)){ deQueue(Qu); for(W=firstAdjVex(gu); w>=;w=NextAdjVex(Guw)) if(!Visited[w]){ Visited[w]=TuRE; Visit(w); ENQueue(Qw); }//if }//while }//if }//BFSTraverse 返回《数据结构》考研复习精编 [] [] [] [] [] [] [] [] [] [] |