为图中的节点定义“已访问”变量

时间:2014-06-29 10:38:34

标签: c++

我已经编写了图表代码,您可以在以下链接中看到。

Calculating outdegree of a node in Graph

现在,我需要为此编写BFS和DFS。为此,我需要一个变量"访问"定义是否访问节点。我意识到我必须在

中包含这个变量
class Graph{

vector<pair<pair<**bool**,T>, list<T2> > > node;

}

这里bool是访问节点的条件。为此,我必须在整个代码中进行更改。有没有其他方法,我可以在不对代码进行太多修改的情况下包含变量?

好的,我明白了。它很简单。很抱歉提出这样的问题。我可以定义另一个

vector<bool> visited 
BFS功能中的

。我将在编写函数后更新代码。再一次抱歉。

1 个答案:

答案 0 :(得分:2)

放置访问内部类的标记并不是一个好主意 - 因为你只能做一次 - 之后你必须在第二次启动算法之前重置所有内容。作为替代方案,您有两种选择:

  • 而不是bool使用某个数字 - 这个唯一标识符号应用了,所以在测试之前,如果访问过的节点必须增加全局应用计数器并检查是否节点版本严格小于全局应用计数器

  • 您可以声明跟踪节点ID的哈希映射(对于c ++ 11使用unordered_map)(作为一个不好但可行的示例使用指向节点的指针)。因此,如果节点的id存在于hash-map中,则访问节点。应用算法后,只需破坏地图

我更喜欢第二种情况。

P.S。是的,@ a_guest的评论 - 是正确的 - 创建你的类Node