深度优先搜索非递归实现

void DFS(AdjList G, int v0) {
    InitStack(&S);
    Push(&S, v0);
    while (!IsEmpty(S)) {
        Pop(&S, &v);
        if (!visited[v])
        {
            visit(v);
            visited[v] = true;
            for (w = FirstNeighbor(G, v); w >= 0; w = NextNeightbor(G, v, w)) {
                if (!visited[w])
                    Push(&S, w);
            }
        }
    }
}

 

上一篇:《数据结构》代码练习题目【南开大学出版】----图


下一篇: