// 非递归DFS
void DFS_Non_RC(Agraph &G, int v){ // v开始dfs
int w; // 顶点序号
InitStack(S);
for(int i = 0; i < G.vexnum; i ++ ) visited[i] = 0; // 初始化
Push(S, v); visited[v] = 1;
while(!IsEmpty(S)){
k = Pop(S);
visit(k); // 访问
for(w = FirstNeighbor(G, k); w >= 0; w = NextNeighbor(G, k, w)){
if(!visited[w]){
Push(S, w);
visited[w] = 1; // 标记,避免再次入栈
}
}
}
}