Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    [C++] Creazione rubrica tramite Lista concatenata

    Salve a tutti, ho iniziato a programmare una sorta di rubrica telefonica per mezzo delle liste concatenate.
    Vi descrivo brevemente il programma: ho una lista contenente 3 campi informazione, uno che contiene il nome, uno il cognome e uno il numero di telefono ed ovviamente il puntatore.
    la mia idea era quella di creare inizialmente una lista vuota e riempirla con i vari dati ( nome, cognome e num di telefono) letti da un file di testo.
    Volevo chiedervi come posso fare per creare una lista se non so a priori quanti elementi posso trovare sul file di testo..

    Pensavo di scrivere una funzioncina che mi legga quanti elementi sono presenti sul file e poi creare una lista di quelle dimensioni( ovviamente una volta creata si potranno fare degli inserimenti ed ampliare la lista).

    Secondo voi può andare o è meglio fare in un altro modo??
    grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C++] Creazione rubrica tramite Lista concatenata

    Originariamente inviato da HeroGian
    Volevo chiedervi come posso fare per creare una lista se non so a priori quanti elementi posso trovare sul file di testo..
    Leggi dal file un elemento alla volta e lo aggiungi alla lista finché non finisce il file.

    Una lista non si crea con specifiche "dimensioni". Non è un array. Proprio perché puoi "aggiungere" elementi in catena quando ti serve.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79

    Re: Re: [C++] Creazione rubrica tramite Lista concatenata

    Originariamente inviato da oregon
    Leggi dal file un elemento alla volta e lo aggiungi alla lista finché non finisce il file.

    Una lista non si crea con specifiche "dimensioni". Non è un array. Proprio perché puoi "aggiungere" elementi in catena quando ti serve.
    Quindi in pratica potrei fare un ciclo che va avanti finchè non trova l'end of file ed allocare un nuovo nodo ad ogni iterazione giusto??

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Re: Re: [C++] Creazione rubrica tramite Lista concatenata

    Originariamente inviato da HeroGian
    Quindi in pratica potrei fare un ciclo che va avanti finchè non trova l'end of file ed allocare un nuovo nodo ad ogni iterazione giusto??
    Corretto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    Potreste darmi una mano?? non capisco perchè ma quando vado a visualizzare la lista mi stampa in loop il contenuto del file
    Probabilmente l'errore è nella funzione crea_lista(), ma non riesco a capire dove sbaglio

    ( per fare delle prove inizio utilizzando una lista contenente solo un campo informazione )

    codice:
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    const int max_length = 10;
    
    struct nodo{
    	char nome[max_length];
    	nodo* next;
    };
    
    typedef nodo* lista;
    
    lista crea_lista()
    {
    	bool res = true;
    	lista rubrica = NULL;
    
    	ifstream leggi_file("../rubrica.txt");
    
    	while( res )
    	{
    		lista contatto = new nodo;
    		res = leggi_file >> contatto -> nome;
    		
    		contatto -> next = rubrica;
    		rubrica = contatto;
    	}
    	
    	return rubrica;
    }
    
    bool stampa_lista( lista rubrica )
    {
    	if ( rubrica == NULL )
    		return false;
    
    	while( rubrica != NULL )
    	{
    		cout << rubrica -> nome << " ";
    		rubrica = rubrica -> next;
    	}
    	return true;
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    79
    up

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non so, ma a parte questo

    res = (bool)(leggi_file >> contatto -> nome);

    mi sembra che vada
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.