-2
Ich bin Tring DFS-Using-Stack in C++ zu implementieren, aber irgendwie dieser Code gibt mir segfault. Ich habe überprüft, mit gdb es segfaults nach dem ersten Push in Main. Was fehlt mir?DFS-Implementierung mit Vektor gibt segfault
#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;
}
Hinweis: Wo Sie setzen Sie 'g' der Größe auf etwas anderes als Null? – Dutow
Größe zuweisen mit der Funktion resize() des Vektors. –
@Dutow ich suchte ich kann nicht herausfinden. Zuerst habe ich g als Vektor von Vektoren deklariert, so dass es als Adjazenzliste verwendet werden kann. Dann dränge ich Elemets dazu. – anekix