我正在开展一个图表的学校项目,在这里,我正在树下深入搜索。
void wdigraph::depth_first(int v) const {
static int firstv = -1;
static bool *visited = NULL;
if (firstv == -1) {
firstv = v;
vector<bool> visited(size);
for (int i = 0; i < size; i++) {
visited[i] = false;
cout << visited[i] << endl;
}
}
cout << label[v];
visited[v] = true;
// visited [0] = true;
该函数的第一个输入值为0(v = 0)并且与之崩溃。 size = 5.正如您在代码末尾所看到的,我尝试使用相同的seg错误手动将visited设置为true。当我删除所有改变访问的尝试时,程序将运行通常没有seg错误的情况。
为什么不能修改这个想法?此外,还有更多的代码,但我决定不提供它,除非必要。
答案 0 :(得分:3)
代码中有两个名为visited
的变量。在if
条件中,visited
是一个向量,但在此块之外,在最后一行:
visited[v] = true;
visited
是指代码开头定义的bool *visited = NULL
。发生段错误是因为您尝试取消引用空指针。