void DFSTraverse(Graph G) { //对图G进行深度优先遍历
for (v = 0; v < G.vexnum; ++v)
visited[v] = FALSE; //初始化已访问标记数据
for (v = 0; v < G.vexnum; ++v) //本代码中是从v=0开始遍历
if (!visited[v])
DFS(G, v);
}
void DFS(Graph G, int v) { //从顶点v出发,深度优先遍历图G
visited[v] = TRUE; //设已访问标记
for (w = FirstNeighbor(G, v); W >= 0; w = NextNeighor(G, v, W))
if (!visited[w]) { //w为u的尚未访问的邻接顶点
DFS(G, W);
} //if
print(v); //输出顶点
}
逆拓扑排序(DFS算法)
最新推荐文章于 2024-08-10 16:58:23 发布