有向グラフのメソッドDFSメソッドを作成しようとしています。今私はセグメンテーション違反に遭遇しています、そして、私はそれがどこにあるのか本当に確信しています。私が有向グラフについて理解していることから、私の論理は正しいと信じています...しかし、目の新鮮なセットは非常に良い助けになるでしょう。C++有向グラフの深さの最初の検索
void wdigraph::depth_first (int v) const {
static int fVertex = -1;
static bool* visited = NULL;
if(fVertex == -1) {
fVertex = v;
visited = new bool[size];
for(int x = 0; x < size; x++) {
visited[x] = false;
}
}
cout << label[v];
visited[v] = true;
for (int v = 0; v < adj_matrix.size(); v++) {
for(int x = 0; x < adj_matrix.size(); x++) {
if(adj_matrix[v][x] != 0 && visited[x] != false) {
cout << " -> ";
depth_first(x);
}
if (v == fVertex) {
fVertex = -1;
delete [] visited;
visited = NULL;
}
}
}
}
クラス定義:
class wdigraph {
public:
wdigraph(int =NO_NODES); // default constructor
~wdigraph() {}; // destructor
int get_size() { return size; } // returns size of digraph
void depth_first(int) const;// traverses graph using depth-first search
void print_graph() const; // prints adjacency matrix of digraph
private:
int size; // size of digraph
vector<char> label; // node labels
vector< vector<int> > adj_matrix; // adjacency matrix
};
おかげ
は、ここに私の機能です!
(パディパッド) –