逆拓扑排序(DFS算法)

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);   //输出顶点
}

你可能感兴趣的:(考研知识摘录)