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 ;
2definire 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 ; };
3Allocare 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
4allocare una variabile temporanea che è un puntatore alla struttura dati :
PRODUCT_DATA * newproduct ;
5Usa malloc ( ) per creare un nuovo elemento , il controllo sempre per un errore :
if ( ( newproduct = malloc ( sizeof ( PRODUCT_DATA ) ) ) == NULL) { abort (); } Pagina 6popolare i campi del nuovo elemento . Impostare il campo " accanto " a NULL :
newproduct - > codice_prodotto = Nuovo codice ; newproduct - > product_size = newsize ; newproduct - > next = NULL ;
7Impostare 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 8Preparati 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 9Aggiornare la coda di punto per il nuovo ultimo elemento , in entrambi i casi :
products_tail = newproduct ;
accedere all'elenco
10Creare un'altra variabile temporanea che punta alla struttura dati :
PRODUCT_DATA * prodotto ;
11la variabile temporanea per la variabile di testa :
prodotto = products_head ; Pagina 12loop 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 13Verifica 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
14deallocare la lista quando il programma termina , come non tutti i sistemi operativi sono in grado di gestire questo automaticamente
15loop fino a quando la variabile di testa non è NULL : .
mentre ( products_head ) {
16Conservare il prossimo puntatore la variabile coda temporaneamente :
products_tail = products_head - > next ;
17deallocare l'elemento :
libero ( products_head ) ;
18il puntatore di testa al puntatore è stato salvato al punto 4 :
products_head = products_tail ; }
Programmazione © www.354353.com