I C , gir en lenket liste du lage en liste uten å bestemme på forhånd hvor lang tid det kan være, og uten å sløse minne ved tildeling av elementer du ikke har ennå . Ulempen er at du må gjøre alt arbeidet med å organisere og administrere listen i minnet . Instruksjoner , Lag datastrukturen
en
Velg et navn , og deretter bruke typedef å definere det. Hver lenket liste vil trenge en struktur , selv om den bare har én variabel :
typedef struct product_data PRODUCT_DATA ;
2 Definer strukturen. Det siste elementet bør være en peker til den typen du nettopp definerte , og heter "neste" :
struct product_data { int product_code ; int product_size ; PRODUCT_DATA * neste ;} ;
3 Fordele to pekere til denne datastruktur , initializing dem til NULL , for å være på listen " hode " og " hale " :
PRODUCT_DATA * products_head = NULL ; PRODUCT_DATA * products_tail = NULL ;
Legg til listen
4 Fordele en midlertidig variabel som er en peker til data struktur:
PRODUCT_DATA * newproduct ;
5 bruk malloc () for å opprette et nytt element , alltid se etter en feil:
if ( ( newproduct = malloc ( sizeof ( PRODUCT_DATA ) ) ) == NULL) { abort (); }
6 fylle ut den nye elementets felt. Sette sitt "neste" -feltet til NULL :
newproduct - > product_code = Ny kode ; newproduct - > product_size = newsize ; newproduct - > neste = NULL ;
7 Sett hodet variabel. Hvis hodet variabelen er NULL , er dette det første elementet lagt til listen , så sett hodet variabel til å peke på det :
hvis products_head = newproduct ;
8 Forbered deg på en annen ( products_head ! ) variabel. I andre tilfeller , halen variable peker på det siste elementet på listen , så sett sitt neste verdi å peke på det nye elementet :
annet products_tail - > neste = newproduct ;
9 Oppdater halen til peker til den nye siste elementet , i begge tilfeller :
products_tail = newproduct ;
tilgang til listen
10 Opprett en midlertidig variabel som peker til datastruktur :
PRODUCT_DATA * produkt ;
11 Sett midlertidig variabel til hodet variabel:
product = products_head ;
12 Loop gjennom elementene , sjekke hver enkelt og deretter sette den midlertidige variabelen til neste pekeren for å krysse til den neste:
while ( produkt) { if ( ! produkt - > product_code = 15 ) { product = produkt - > neste ;} }
13 Sjekk om variabelen er NULL . Så fall har du aldri funnet elementet :
hvis return 0 ; (produkt ! ) . Ellers peker det til elementet du var ute etter : retur produkt - > product_size ;
Clean Up Your Work
14 deallocate listen når programmet avsluttes, som ikke alle operativsystemer vil håndtere dette automatisk
15
Loop så lenge hodet variabelen er ikke NULL : .
while ( products_head ) {
16 butikken sin neste pekeren i halen variabel midlertidig :
products_tail = products_head - > neste ;
17 deallocate elementet :
gratis ( products_head ) ;
18 Sett hodet pekeren til pekeren du lagret i trinn 4:
products_head = products_tail ;}