-2
我打算在C++中实现DFS使用堆栈,但不知何故此代码给我段错误。在首次推入main后,我使用gdb检查了它的segfaults。我错过了什么?使用向量的dfs实现给出段错误
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#define MAX_N 5001
using namespace std;
vector< vector<int> > g;
bool visited[MAX_N];
void dfs(int start){
stack<int> s;
s.push(start);
while(!s.empty()){
int current = s.top();
s.pop();
visited[current] = true;
cout<<current<<"\n";
for(int i = 0; i < g[current].size() ; ++i){
if(!visited[g[current][i]]){
s.push(g[current][i]);
visited[g[current][i]] = true;
}
}
}
}
int main() {
g[0].push_back(1);
g[0].push_back(2);
g[2].push_back(3);
g[3].push_back(4);
dfs(0);
return 0;
}
提示:你在哪里设置'g'的大小为零以外的东西吗? – Dutow
使用vector的resize()函数将大小赋值给g。 –
@Dutow我搜索了我找不到。首先我宣布g作为矢量矢量,以便它可以用作邻接列表,然后我将元素推向它 – anekix