C语言中图的深度优先搜索

C语言中图的深度优先搜索,c,C,我制作了整个邻接列表来表示图形。我也能够实现BFS代码。但是,我无法理解DFS 我已经想出了这个算法: 将源顶点标记为已访问 把它推到堆栈上 而堆栈不是空的 { 移除顶点并将其命名为v。 给v的所有邻居打电话。 } 这是正确的吗?我想对这个图进行一次完整的遍历。在这种情况下也应该有一个基本情况,但会是什么呢?您需要保留一个已访问的阵列,以跟踪您以前访问过的所有节点。 然后避免一次又一次地访问相同的节点 这样,您的程序肯定会成功终止对于您来说,这不是一个真正的问题,因此,您只需要了解更多有关DFS

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

我已经想出了这个算法:

  • 将源顶点标记为已访问
  • 把它推到堆栈上
  • 而堆栈不是空的 { 移除顶点并将其命名为v。 给v的所有邻居打电话。 }

  • 这是正确的吗?我想对这个图进行一次完整的遍历。在这种情况下也应该有一个基本情况,但会是什么呢?

    您需要保留一个已访问的阵列,以跟踪您以前访问过的所有节点。 然后避免一次又一次地访问相同的节点


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

    对于您来说,这不是一个真正的问题,因此,您只需要了解更多有关DFS的信息。这里有一个相当不错的伪代码和解释——但我读到了,这就是我想说的。应该有一些递归的基本情况。它会是什么?基本情况是当堆栈为空时。我能够想到这一点,这是我在我的原始帖子中写的。但我知道,这里似乎缺少了一些东西,因为DFS的递归实现没有完整的算法。你用谷歌搜索过吗?这里有工作代码: