Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Esercizio su liste

  1. #1
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500

    [C] Esercizio su liste

    Ciao a tutti, stavo provando a svolgere questo esercizio di programmazione C, ancora non ho scritto tutto il codice, e prima di finire volevo sapere se era corretto risolvere l'esercizio con una lista di liste, ovvero, usando 2 strutture allocate dinamicamente tipo:

    link
    esercizio

    codice:
    struct pilota {
            char pilota[20];
            char scuderia[20];
            int numero;
            struct pilota *next;
            struct tempo *top_tempi;
    }
    
    struct tempo {
            int tempo;
            int giro;
            struct tempo *next;
    }
    dove nella prima memorizzo numero pilota, il nome del pilota, la scuderia del pilota, mentre nella seconda struttura memorizzo il tempo relativo a ciuscun giro.
    spero di essermi spiegato bene...
    se ci sono incomprensioni...fatemelo sapere...darò altre spiegazioni
    grazie in anticipo
    MrX

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    inoltre volevo sapere un altra cosa...ovvero la cancellazione fisica di una lista di liste...

    avendo le 2 liste descritte in precedenza..(o anche altre) si ha:

    codice:
    p = head;
        while ( p != NULL ) {
              p2 = p->topt;
              while ( p2 != NULL ) {
                    pOldT = p2;
                    p2 = p2->next;
                    free ( pOldT );
              }
              pOldP = p;
              p = p->next;
              free ( pOldP );
        }
    potete dirmi se è corretto...perchè ho provato ad implementarlo ma non libera la memoria...ho provato ad aprire il task manager...vedo la memoria allocata...all'avvio del programma la memoria aumenta(nel mio caso di 2mb) ma quando poi faccio eseguire il pezzo di codice postato su...dovrebbe pian piano diminuire...invece termina tutto e nn cambia niente...e solo alla chiusura del programma la memoria si ritorna cm prima...
    grazie
    Mrx

  3. #3
    ti conviene fare una funzione specifica per liberare la memoria di tempo

    questa è ricorsiva

    codice:
    void freeTempo (struct tempo * node) {
      
      if ( node ) {  
        freeTempo ( node->next ) ;
        free ( node ) ;
      }
    
    }
    adesso continua tu
    ciao
    sergio

  4. #4
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    thanks per la soluzione..provo ad implementarla per la lista di liste...perchè mi pare di capire che in quel modo si effettua solo una cancellazione di una lista semplice....
    grazie ancora...

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.