Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Cancellare una lista

  1. #1

    Cancellare una lista

    Qual' è il corretto procedimaneoto per cancellare il contenuto di una lista in ansi c?


    Non credo che basti mettere il puntatore alla testa=NULL, per evitare di avere aree di memoria sporca, ma sia necessario utilizzare una free per ogni nodo.

    Ci sarà quindi un ciclo (while testa->next != null) {

    }

    else

    { testa==NULL; }


    e dentro che ci metto?

    grazie!

  2. #2
    codice:
    void cancella (struct dato **s) {
            struct dato *l = *s;
            while (l) {
                    *s = l -> punt;                 
                    free (l);
                    l = *s;
            }               
    }
    Esecuzione:

    codice:
    struct dato * l1;
    ...
    cancella (&l1);
    P.S.
    Ci sarà quindi un ciclo (while testa->next != null) {
    Se vuoi farlo in questo modo devi prima controllare che testa non sia uguale a NULL, e cmq guarda il codice che ho scritto sopra io.

    Ciao! :quipy:

  3. #3
    scusa, ma non ho ben capito, sono un pò tardo.

    mettiamo ad esempio che io abbia tre puntatori alla struttura lista

    *testa punta alla testa
    *coda punta alla coda
    *scorri serve per scorrere la lista

    la funzione non necessita di parametri, perchè non devo indicare il nod da cancellae, ma li volgio cancellare tutti.

    Grazie

  4. #4
    codice:
    cancella (&scorri); //purchè scorri abbia l'indirizzo della testa.
    E poi metti coda e testa a NULL, visto che non puntano a nulla.

    La funzione invece necessita di parametri perchè deve dirgli quale lista cancellare.

    Di solito un adt di tipo lista testa-coda si dichiara in questo modo:

    codice:
    struct tc {
        struct lista * testa;
        struct lista * coda;
    } pt_tc;
    Cosi basta che fai:

    codice:
    pt_tc.testa = indirizzo testa;
    pt_tc.coda = indirizzo coda;
    scorri invece lo usi come puntatore che scorre la lista.

    Ciao.

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.