使用基于堆栈的深度优先搜索查找周期

时间:2011-12-10 09:09:19

标签: recursion graph stack depth-first-search

我知道你使用DFS的递归实现,其中所有节点都以白色开始,在第一次遇到它们时都是灰色的,并且在他们所有的孩子被探索后都是黑色的,你知道如果你有一个周期曾遇到灰色节点。

但是如何使用堆栈实现呢?

1 个答案:

答案 0 :(得分:-1)

Stackoverflow上的

This回答指向使用堆栈实现DFS的Java代码sample

此外,如果您对C感到满意并且我希望您也喜欢chess,我强烈建议您学习Andy DuPlain在公共领域发布的fbk2rbm源代码。

Fritz电子书转换为Rebel 7格式(以国际象棋用语打开图书馆)是一个方便的实用程序。

它利用堆栈,国际象棋移动被视为节点。

摘录:

...

/* Used to hold move */
struct Move {
  char FromFile, FromRank;
  char ToFile, ToRank;
  unsigned char Eval;
  char StartVar;    
};

/* List of moves seen */
struct Move Moves[256]; 

...

将程序扩展到地址位置圆柱检测(假设不同的移动顺序可能会导致相同的位置/碰撞)将是与您的问题相关的一个很好的练习。