Próbuję zaimplementować wykres w C++. Reprezentuję węzeł na wykresie za pomocą struktury, która zawiera dwie zmienne -
a) liczbę całkowitą zawierającą pewne informacje o węźle.
b) lista zawierająca indeks innych wierzchołków, które są z nią połączone.
Poniżej znajduje się kod.Wykresy używające listy dopasowania w C++
// Graphs using adjacency list
#include <iostream>
#include <list>
#include <cstdlib>
using namespace std;
// structure to represent a vertex(node) in a graph
typedef struct vertex{
int info;
list<int> adj; // adjacency list of edges contains the indexes to vertex
} *vPtr;
int main(){
vPtr node = (vPtr)malloc(sizeof(struct vertex));
node->info = 34; // some arbitrary value
(node->adj).push_back(2); // trying to insert a value in the list
return 0;
}
Kod jest kompilowany dobrze, ale otrzymuję błąd czasu wykonywania, podczas gdy odpycham element na liście. Czy jest jakikolwiek problem w mojej strukturze.
Używam bloków kodu i GNU GCC, kompilator C++ 98 do kompilacji mojego kodu.
Coś podejrzanego o deklaracji vPtr. – Jiminion
@Jim: Nie sądzę, ponieważ kod daje problem tylko wtedy, gdy cofam listę. Jeśli usunę ten wiersz, kod będzie działał poprawnie. – Nishant