Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come creare una lista collegata in C

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

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 ; } 

 

Programmazione © www.354353.com