您的位置:首页 > 理论基础 > 数据结构算法

数据结构 - 图的深度优先遍历(C++)

2014-02-25 13:26 281 查看
Boolean visited[MAX_VERTEX_NUM]; //访问标志数组。
Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数。

void DFSTraverse (Graph G, Status(*Visit)(int v)) //图的深度优先遍历。
{
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 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))
//FirstAdjVex返回v的第一个邻接顶点,若顶点在G中没有邻接顶点,则返回空(0)。
//若w是v的邻接顶点,NextAdjVex返回v的(相对于w的)下一个邻接顶点。
//若w是v的最后一个邻接点,则返回空(0)。
if(!visited[w])
DFS(G, w); //对v的尚未访问的邻接顶点w调用DFS。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息