I C giver en sammenkædet liste, du vil oprette en liste uden at beslutte før tid , hvor længe det måtte være, og uden at spilde hukommelse ved tildeling elementer, du ikke har endnu. Ulempen er, at du er nødt til at gøre alt arbejdet for organisering og styring af listen i hukommelsen. Instruktioner
Opret datastruktur
1
Vælg et navn , og derefter bruge typedef at definere det. Hver linkede liste får brug for en struktur , selv om det kun har én variabel :
typedef struct product_data PRODUCT_DATA ,
2 Definer struktur. Det sidste element skal være en pegepind til den type, du lige har defineret , og navngivet "Næste" :
struct product_data { int product_code , int product_size , PRODUCT_DATA * næste ;} ;
3 Afsætte to henvisninger til denne datastruktur , initialiseres dem til NULL , for at være på listen " hoved" og " hale" :
PRODUCT_DATA * products_head = NULL ; PRODUCT_DATA * products_tail = NULL ;
føje til listen < br >
4 afsætte en midlertidig variabel, der er en pointer til datastrukturen :
PRODUCT_DATA * newproduct ,
5 Brug malloc () for at oprette et nyt element , altid kontrollere om en fejl:
if ( ( newproduct = malloc ( sizeof ( PRODUCT_DATA ))) == NULL) { abort ( );}
6 befolke nye elementets felter. Indstille dens "next " for at NULL :
newproduct -> product_code = Alternativ kode , newproduct -> product_size = newsize , newproduct -> next = NULL ;
7 Indstil hovedet variabel. Hvis hovedet variabel er NULL , dette er det første element føjes til listen, så sæt hovedet variable til at pege på det :
hvis products_head = newproduct ,
8 Forbered dig på en anden ( products_head !) variabel . I andre tilfælde , halen variable peger det sidste punkt på listen , så sæt dens næste værdi, til at pege på det nye element :
ellers products_tail -> next = newproduct ,
9 Opdater hale til peger på den nye sidste element i begge tilfælde :
products_tail = newproduct ,
adgang til listen
10 Opret en anden midlertidig variabel peger på datastruktur:
PRODUCT_DATA * produkt
11 Indstil din midlertidige variabel til hovedet variablen :
produkt = products_head ,
12 Loop igennem elementerne , kontrol hver enkelt og derefter indstille den midlertidige variabel til næste pointer til at krydse til den næste:
while ( produkt) { if (! produkt -> product_code = 15 ) { produkt = produkt -> næste ;}}
13 Tjek om variablen er NULL . Hvis ja, du aldrig fundet varen :
hvis tilbagevenden 0; (produkt !) . Ellers peger på det element, du ledte efter : retur produkt -> product_size ,
Clean Up Your Work
14 deallocate listen, når dit program slutter , da ikke alle operativsystemer vil håndtere dette automatisk
15
Loop så længe hovedet variabel er ikke NULL : .
while ( products_head ) {
16 Store sin næste pointer i halen variablen midlertidigt :
products_tail = products_head -> næste ,
17 deallocate elementet :
gratis ( products_head )
18 Indstil hoved pointer til pointer du gemte i trin 4:
products_head = products_tail ;}