微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用vector的vectors实现图数据结构时如何解决无输出问题?

如何解决使用vector的vectors实现图数据结构时如何解决无输出问题?

#include <iostream> 
#include <vector> 

using namespace std; 

class Graph{
    int v;
    vector<vector<int> > adj;
    
    public:
        Graph(int v){
            this->v = v;
        }
        
        void addEdge(int x,int y){
            adj[x].push_back(y);
            adj[y].push_back(x);
        }   
        
        void displayGraph(){
            for(int i=0; i<this->v; i++){
                cout << i << " --> ";
                for(int j=0; j<adj[i].size(); j++){
                    cout << adj[i][j] << " ";
                }
                cout<<endl;
            }
        }   
};

  
int main() 
{ 
    Graph g1(3);
    
    g1.addEdge(0,1);
    g1.addEdge(0,2);
    
    g1.displayGraph();
    
    return 0; 
} 

我想用 C++ 实现图形数据结构。因此,我创建了一个名为 Graph 的类并使用向量的向量来创建我的邻接列表。我使用 vector 是因为我可以在需要时动态分配。我还有一个构造函数来设置顶点数。然后我有名为 addEdge() 的成员函数。然后我有 displayGraph() 函数显示我的图表。

问题是当我执行它时它会执行但它不提供任何输出。同样在终端中它显示了这一点。返回值不为 0。

Process exited after 3.137 seconds with return value 3221225477
Press any key to continue . . .

解决方法

Graph(int v) {
    this->v = v;
    adj.resize(v); //do this
}

您已声明 adj,但 adj[x] 中的 addEdge() 不起作用,因为您试图访问尚未分配内存的内容。因此,向量下标将超出范围。

现在打印:

0 --> 1 2
1 --> 0
2 --> 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。