我想在c ++中实现DFS usning stack,但不知怎的,这段代码给了我segfault。我在第一次推入main后使用gdb检查了它的段错误。我错过了什么?
#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;
}
答案 0 :(得分:2)