图的深度优先搜索的非递归算法

算法思想:

使用一个栈来记忆下一步可能访问的节点,同时使用一个访问标记数组visited来记忆第i个顶点是否在栈内或者曾经在栈内,若是则它以后不再进栈,图采用邻接表的形式存储。

void DFS(Graph &G,int v){
    //从顶点v开始深度优先搜索,一次遍历一个连通分量的所有顶点
    int w;
    InitStack(S);
    for(int i=0;i=0;w=NextNeighbor(G,k,w))
            if(!visited[w]){
                push(S,w);
                   visited[w]=true;
}
}
}

 

你可能感兴趣的:(数据结构,算法,深度优先,算法)