繁体   English   中英

使用向量的图的 DFS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM