标签:顶点 依次 tps rap code bfs 递归 算法 fir
title: 数据结构 | 图-3 | 图的遍历
date: 2019-11-26 22:38:52
tags: 数据结构
BFS、DFS
//--- 下列算法使用的全局变量 ---
Boolean visited[MAX]; // 访问标志数组
Status (* VisitFunc)(int v); // 函数变量
void DFS(Graph G, int v) {
// 从第v个顶点出发递归地深度优先遍历图G。
visited[v] = TRUE;
VisitFunc(v);
// 访问第v个顶点
for(w=FirstAdjVex(G,v);w!=0;w=NextAdjVex(G,v,w))
if(!visited[w])
DFS(G, w);
// 对v的尚未访问的邻接顶点w递归调用DFS
}
void DFSTraverse(Graph G, Status (*Visit)(int v)) {
// 对图G作深度优先遍历。
VisitFunc = Visit;
for (v=0; v<G.vexnum; ++v)
visited[v] = FALSE; // 访问标志数组初始化
for (v=0; v<G.vexnum; ++v)
if (!visited[v])
DFS(G, v);
// 对尚未访问的顶点调用DFS
}
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.vexnum; ++ v)
if( !visited[v] ){
visited[v] = TRUE;
visit( v );
EnQueue( Q, v );
while( !QuqueEmpty( Q)) {
Dequeue( Q, u );
for(w=FirstAdjVex(G,u);w;w=NextAdjVex(G,u,w))
if( !Visited[w] ){
Visited[w]=TRUE;
Visit( w );
Enqueue(Q,w);
}// if
}// while
}// if
}// BFSTraverse
标签:顶点 依次 tps rap code bfs 递归 算法 fir
原文地址:https://www.cnblogs.com/nightland/p/13504385.html