Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] problema con insiemi di liste

    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
    La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché. A.E.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    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.

    codice:
    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
    La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché. A.E.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.