【问题标题】:Depth first search for a graph in C深度优先搜索C中的图
【发布时间】:2014-06-18 03:38:52
【问题描述】:

我制作了图形的整个邻接表表示。我也能够实现 BFS 代码。但是,我无法理解 DFS。

我已经能够想出这个算法:

  1. 将源顶点标记为已访问。
  2. 将其推入堆栈。
  3. 当堆栈不为空时 { 删除顶点并将其命名为 v。 为 v 的所有邻居调用 dfs。 }

这是正确的吗?我想做一个完整的图表遍历。这也应该有一个基本案例,但它会是什么?

【问题讨论】:

  • 这不是一个真正的问题,您只需要了解有关 DFS 的更多信息。这里有一个相当不错的伪代码和解释 - en.wikipedia.org/wiki/Depth-first_search
  • 但是我读到了,这就是我想说的。应该有一些递归的基本情况。会是什么?
  • 基本情况是堆栈为空时。
  • 我想出了这个,这就是我在原始帖子中所写的。但我知道,那里似乎缺少一些东西,因为没有完整的 DFS 递归实现算法。
  • 你谷歌了吗?这里有工作代码:stackoverflow.com/questions/11175108/…

标签: c


【解决方案1】:

您需要保留一个访问过的数组来跟踪您之前访问过的所有节点。 然后避免一次又一次地访问相同的节点。

这样你的程序肯定会成功终止

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多