我在寫一個簡單的C++程序來實現使用鄰接表的圖形。我的計劃在下面。我正在使用向量,其中每個索引都是頂點。矢量中的每個槽存儲指向Edge_obj的指針,Edge_obj是鄰接列表中鏈接列表的對象。C++代碼:這是什麼問題?
但是,當我打印使用print_graph圖形的第一邊緣()我的Get-
0 - > 2087138040
我期待0 - > 3。
以下代碼有什麼問題?
#include<iostream>
#include<vector>
#include <forward_list>
using namespace::std;
class Edge_obj {
public:
int V;
Edge_obj* next;
Edge_obj(int V, Edge_obj* next);
};
Edge_obj::Edge_obj(int V, Edge_obj* next):V(V),next(next) {}
class Graph {
public:
int V;
vector< Edge_obj* > VC;
Graph(int v);
void add_edge(int v1, int v2);
void print_graph();
};
Graph::Graph(int v):V(v),VC(v,nullptr) {}
void Graph::add_edge(int v1, int v2) {
Edge_obj obj (v2, VC[v1]);
VC[v1] = &obj;
}
void Graph::print_graph() {
cout<<"0-->"<<VC[0]->V;
}
int main()
{
Graph oho(4);
oho.add_edge(0,1);
oho.add_edge(0,2);
oho.add_edge(0,3);
oho.print_graph();
return 0;
}
您的VC存儲本地對象指針,這會導致未定義的行爲。 –
@RonTang非常感謝!解決了。 –
不客氣,維琪見我的回答。 –