非递归算法就要借助一个栈!
使用栈之后访问visit函数就是从右到左进行的
void dfs(AGraph &A, int k)
{
InitStack(s); //初始化一个栈
int i;
for(i = 0; i < A.vexnum; i++)
{
vis[i] = flase;
}
push(&s, k);
while(!IsEmpty(s))
{
k = Pop(s);
visit(k);
vis[k] = 1;
for(i=FirstNeighbour(A, k);i>=0;i=NextNeighbour(A,k, i))
{
if(!vis[i])
{
Push(s, i); //放进栈里但是不访问
vis[i] = true;
}
}
}
}