In C , una lista concatenata permette di creare una lista senza decidere in anticipo quanto tempo potrebbe essere, e senza sprecare memoria da elementi di ripartizione non avete ancora . Il rovescio della medaglia è che si deve fare tutto il lavoro di organizzare e gestire l'elenco in memoria .
Istruzioni Creare i dati Struttura
1
Scegliere un nome , quindi utilizzare typedef per definirlo. Ogni lista collegata avrà bisogno di una struttura , anche se ha una sola variabile:
typedef struct product_data PRODUCT_DATA ;
2 definire la struttura . L' ultimo elemento deve essere un puntatore al tipo appena definito , e denominato " next " :
product_data struct { int codice_prodotto ; int product_size ; PRODUCT_DATA * next ; };
3 Allocare due puntatori a questa struttura dati , l'inizializzazione a null, per essere la lista " testa" e "coda" :
PRODUCT_DATA * products_head = NULL; PRODUCT_DATA * products_tail = NULL;
Aggiungi a elenco < br >
4 allocare una variabile temporanea che è un puntatore alla struttura dati :
PRODUCT_DATA * newproduct ;
5 Usa malloc ( ) per creare un nuovo elemento , il controllo sempre per un errore :
if ( ( newproduct = malloc ( sizeof ( PRODUCT_DATA ) ) ) == NULL) { abort (); } Pagina 6 popolare i campi del nuovo elemento . Impostare il campo " accanto " a NULL :
newproduct - > codice_prodotto = Nuovo codice ; newproduct - > product_size = newsize ; newproduct - > next = NULL ;
7 Impostare la variabile di testa . Se la variabile di testa è NULL , questo è il primo elemento aggiunto alla lista , in modo da impostare la variabile per puntare ad essa testa :
se products_head = newproduct ; Pagina 8 Preparati per un diverso ( products_head ! ) variabile . In altri casi , la coda variabile punta al l'ultimo elemento della lista , in modo da impostare il successivo valore per puntare al nuovo elemento:
altro products_tail - > next = newproduct ; Pagina 9 Aggiornare la coda di punto per il nuovo ultimo elemento , in entrambi i casi :
products_tail = newproduct ;
accedere all'elenco
10 Creare un'altra variabile temporanea che punta alla struttura dati :
PRODUCT_DATA * prodotto ;
11 la variabile temporanea per la variabile di testa :
prodotto = products_head ; Pagina 12 loop attraverso gli elementi , controllandoli uno per uno e impostando la variabile temporanea per la accanto puntatore per attraversare la prossima:
mentre (prodotto) {if ( ! prodotto - > codice_prodotto = 15) { prodotto = product- > next ; } } Pagina 13 Verifica se la variabile è NULL . Se è così , non hai mai trovato l' articolo:
se return 0; ( prodotto! ) . In caso contrario, indica l'oggetto che stavate cercando : restituzione del prodotto - > product_size ;
ripulire il lavoro
14 deallocare la lista quando il programma termina , come non tutti i sistemi operativi sono in grado di gestire questo automaticamente
15
loop fino a quando la variabile di testa non è NULL : .
mentre ( products_head ) {
16 Conservare il prossimo puntatore la variabile coda temporaneamente :
products_tail = products_head - > next ;
17 deallocare l'elemento :
libero ( products_head ) ;
18 il puntatore di testa al puntatore è stato salvato al punto 4 :
products_head = products_tail ; }