[英]DFS of a graph using vector
我想使用向量实现图的邻接表代表,并且我正在使用一个旨在使用链表作为指南来实现邻接表的程序,但我无法这样做。 这是我迄今为止尝试过的代码:
#include <bits/stdc++.h>
using namespace std;
class graph{
int v;
vector<int> *adj;
void DFSutil(int v, vector<bool> &visited){
visited[v]=true;
cout<<v<<" ";
for(int i=0;i<v;i++){
if(!visited[i])
DFSutil(i,visited);
}
}
public:
graph(int v){
this->v = v;
vector<int> adj[v];
}
void addEdge(int v,int w){
adj[v].push_back(w);
}
void DFS(int source){
vector<bool> visited;
DFSutil(source, visited);
}
};
int main()
{
graph g(4);
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,2);
g.addEdge(2,0);
g.addEdge(2,3);
g.addEdge(3,3);
g.DFS(2);
return 0;
}
初始化有几个错误:
#include <bits/stdc++.h>
using namespace std;
class graph{
int v;
vector<int> *adj;
void DFSutil(int v, bool visited[]){
visited[v]=true;
cout<<v<<" ";
vector<int>::iterator i;
for(i=adj[v].begin();i!=adj[v].end();++i){
if(!visited[*i])
DFSutil(*i,visited);
}
}
public:
graph(int v){
this->v = v;
adj = new vector<int>[v];
}
void addEdge(int v,int w){
adj[v].push_back(w);
}
void DFS(int source){
bool *visited = new bool[source];
for(int i=0;i<source;i++)
visited[i]=false;
DFSutil(source, visited);
}
};
int main()
{
graph g(4);
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,2);
g.addEdge(2,0);
g.addEdge(2,3);
g.addEdge(3,3);
g.DFS(2);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.