思路:
需要一个栈S,记忆下一次访问的顶点。
使用访问标记数组visited[],标记第i各顶点是否在栈内或曾经在栈内。若曾经在栈内,则不能再进栈。
void DFS_NON_RC(AGraph &G,int v){
int w;
InitStack(s);
for(i=0;i<G.vexnum;i++){
visited[i]=FALSE;
}
Push(S,v);
visited[v]=TRUE;
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]=true;
}//if
}
}//while
}