Progetto grafo: PROBLEMA con puntatori

di il
1 risposte

Progetto grafo: PROBLEMA con puntatori

Ciao a tutti, martedì devo consegnare un progetto per l'esame di Fondamenti di programmazione, ma ho incontrato un problema insormontabile !!! Nel seguente codice devo caricare i dati da un file e salvarli in un vector <elemento_grafo> mappa, dove elemento_grafo è così definito:
struct lista_adiacenti // elementi adiacenti
{      collegamento info;
       lista_adiacenti* next; };
struct elemento_grafo// struttura degli elementi del grafo
{      string  nome_citta;   
       int     num_collegamenti;   
       lista_adiacenti* adiacente; }; // lista di adiacenti
Quando carico non riseco a implementare in modo giusto la lista, credo sia un problema di puntatori.
Vi prego aiutatemi, sono in crisi. Posto il codice della funzione:
void carica_mappa () //carica mappa dal file
              {   ifstream (inf);
                  inf.open ("mappa.txt");
                  if (inf.fail())  throw 4;
                  string citta1,citta2,t;
                  int num_coll,h,m;
                  float costo,lungh;
                  while (!inf.eof()) {
                       inf>>ws;
                       getline(inf,citta1);
                       if(inf.fail()) break;
                       inf>>num_coll;
                       elemento_grafo temp;
                       temp.nome_citta = citta1;
                       temp.num_collegamenti = num_coll;
                       temp.adiacente = NULL;
                       for (int j=0; j<num_coll; j++)
                           { inf>>ws;
                             getline (inf,citta2); 
                             inf>>lungh;
                             inf>>ws;              
                             getline(inf,t);
                             inf>>costo;
                             inf>>h;
                             inf>>m;
                             collegamento c = collegamento :: collegamento(citta2,lungh,t,costo,h,m);
                             lista_adiacenti* tmp = new lista_adiacenti;
                             tmp->info = c;
                             tmp->next = temp.adiacente;
                             temp.adiacente = tmp;}
                       mappa.push_back (temp);  
                       }
                  return ;  }

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte