PDA

Visualizza la versione completa : [C++] Grafo con liste di adiacenza


br1g4nt3
31-03-2011, 11:24
Salve a tutti, ho un problema con il progetto di Algoritmi e Strutture Dati. In pratica devo realizzare un grafo rappresentato tramite liste di adiacenza. La mia idea di grafo era quella di realizzare un vettore di liste utilizzando le due strutture della STL, ma mi trovo in difficoltà, perché non riesco a capire dove sbaglio.

Spiego meglio:
ho una classe Nodo con due attributi: string dato; int colore;

il Grafo dovrebbe essere così composto vector <list<Nodo> > vertici; Ok?
Ora ho un metodo che mi dovrebbe costruire il grafo, in cui faccio un resize del vector per espanderlo al numero totale di nodi del grafo e poi dovrei inserire in ogni campo del vettore i singoli nodi.

A questo punto, correggetemi se sbaglio, dovrei creare una lista per ogni campo del vettore e c'ho provato con list <Nodo> *adj new list<Nodo> [n]; Ma sta cosa che ho scritto mi manda in crash il programma.

Qualcuno di voi ha dei suggerimenti?? Vi prego aiutatemi :messner:

alka
31-03-2011, 11:29
Posta il codice sorgente della soluzione che hai scritto fino ad ora, così gli utenti possono osservarla ed eventualmente correggerla o segnalarti il punto che da luogo all'errore.

br1g4nt3
31-03-2011, 11:45
mmm ok ci provo, poiché sto nel panico più assoluto, ché i tempi sono ristretti, ho fatto tante modifiche e prove e tutte mi si fermano allo stesso punto.


void Grafo::buildGrafo(int n) {
//reimposto la grandezza del vettore dei vertici
vertici.resize(n);
Nodo *nodino = new Nodo [n];
//creo un insieme di liste
list <Nodo> *adj = new list <Nodo> [n];
string dato;
vector <list <Nodo> >::iterator j;
j= vertici.begin();
for (int i = 0; i < n; i++) {
cout << "Inserire il nodo:\n"; cin >> dato; nodino[i].setDato(dato);
adj[i].push_front(nodino[i]); vertici[j] = adj[i]; j++;
}
}

Aggiungo che uso come editor DevC++ e in fase di compilazione non mi da nessun errore. Quindi deduco che l'errore debba stare nella logica.

In fase di esecuzione, dal main, faccio inserire all'utente il numero di nodi di cui deve essere composto il grafo, ma quando prova ad entrare nella funzione buildGrafo il terminale mi genera queso errore:
This application has requested the Runtime to terminate it in an usual way. Please contact the application's support team for more information

Loading