遍历图的路径

1,深度优先搜索

Boolean visited[MAX];
Status(*VisitFunc)(int v);

void DFSTraverse(Graph G,Status(*Visit)(int v)){
VisitFunc=Visit;
for(v=0;v<G.vexnum;++v)visited[v]=FALSE;InitQueue(Q);
for(v=0;v<G.wexnum;++v)
if(!visited[v]) DFS(G,v);}

void DFS(Graph G,int v){
visited[v]=TURE;VisitFunc(v);
for(w=FirstAfjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
if(!visited[w])DFS(G,W);}

 

2,广度优先搜索

 

void BFSTraverse(Graph G,Status(*Visit)(int v)){
for(v=0;v<G.vexnum;++v)visited[v]=FALSE;InitQueue(Q);
for(v=0;v<G.wexnum;++v)
if(!visited[v]) {
visited[v]=TRUE;Visit(v);EnQueue(Q,v);while(!QueueEmpty(Q)){
DeQueue(Q,u);
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,u,w))
if(!visited[w]) {
visited[w]=TRUE;Visit(w);EnQueue(Q,w);}}
}}

 

 

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/s517387735/article/details/8849821
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞