Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447

    [C++] Funzione che crea una lista

    Questa funzione dovrebbe creare una lista:

    codice:
    //...
    struct elem
    {
        int inf;
        elem* pun;
    }
    
    typedef elem* lista;
    
    lista crealista(int n)
    {
        lista p0=0:
        elem* p;
        for (int i+1; i<=n, i++)
        {
            p=new elem;
            cin >> p->inf;
            p-> pun=p0;
            p0=p;
        }
        return p0;
    }
    Su questo codice avrei due domande:

    1. Il comando typedef si riferisce allo struct elem o al suo membro elem* pun?(Io penso alla struttura)

    2. Seguendo l'esecuzione del programma non capisco come ogni volta il ciclo for crei una nuova struttura al quale si fa riferimento con il puntatore della struttura precedente. A mio avviso ogni volta che si chiama l`istruzione p0=p si cancella il vecchio contenuto di p0 e si salva la nuova struttura.

    Secondo il mio ragionamente succederebbe questo(con n=2):

    n=1
    p0=0
    p=elem{inf=? e pun=p0}
    p0=p quindi p0=elem

    n=2
    p0=elem
    p=elem2{inf=? e pun=p0}
    p0=elem2

    Quindi la struttura elem(la prima) andrebbe persa...

  2. #2
    typedef elem* lista;

    definisce un alias per un puntatore a elem, quindi tutte le volte che vedi scritto lista e come se scrivessi elem*.

    nella funzione crealista la riga
    for (int i+1; i<=n, i++)

    i è indefinito e quindi comporta risultati inaspettati. Inoltre non è definito p->inf. La funzione appare purtroppo non molto chiara nelle finalità e con errori e non è possibile dirti quindi come sistemarla.

    Tieni infene presente che nella std library esiste un tipo list già pronto all'uso.
    ciao
    sergio

  3. #3
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    La funzione non l'ho scritta io, ma l'ho presa da un libro universitario del corso di programmazione. Sfogliandolo ho trovato questo esempio e non capendone a pieno il significato cercavo una spiegazione.

    Per quanto riguarda l'alias creato con typedef non ho ancora ben capito a quale elem si riferisce, se quello interno alla struttura o alla struttura stessa.

  4. #4
    Certo lista si riferisce alla struttura stessa,
    precisamente è un puntatore ad una variabile di tipo elem.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    scrivere

    lista p0 = NULL;
    oppure
    elem* lista p0 = NULL;

    è equivalente.

    Per quanto riguarda l'esempio del testo universitario dovresti postare tutto il codice, se ti è possibile, con il main.
    Come ti dicevo l'istruzione
    codice:
        for (int i+1; i<=n, i++)
    non inizializza la variabile i. A meno che fosse scritto
    codice:
    for (int i =1; i<=n, i++)
    e tu hai trascritto erroneamente i+1
    ciao
    sergio

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.