I C , ger en länkad lista du skapa en lista utan att avgöra i förväg hur lång tid det skulle kunna vara , och utan att slösa minne genom att fördela element du inte har ännu . Nackdelen är att du måste göra allt arbete för att organisera och hantera listan i minnet . Instruktioner Review, Skapa den datastruktur
1
Välj ett namn och sedan använda typedef för att definiera den . Varje länkad lista behöver en struktur , även om den bara har en variabel :
typedef struct product_data PRODUCT_DATA , Sida 2 Definiera strukturen . Den sista delen bör vara en pekare till den typ du just definierat , och heter " next " :
struct product_data { int product_code , int product_size ; PRODUCT_DATA * nästa ;} ;
3 Tilldela två pekare till denna datastruktur och initierar dem till NULL , för att vara på listan " huvud " och " svans " :
PRODUCT_DATA * products_head = null; PRODUCT_DATA * products_tail = null;
Lägg till listan
4 Tilldela en temporär variabel som är en pekare till datastruktur :
PRODUCT_DATA * newproduct ,
5 Använd malloc ( ) för att skapa ett nytt element , alltid kontrollera för fel :
if ( ( newproduct = malloc ( sizeof ( PRODUCT_DATA ) ) ) == NULL ) { abort ( ) ;}
6 fylla i den nya elementets fält . Ställ sin " nästa " fältet till NULL :
newproduct - > product_code = Nykod , newproduct - > product_size = newsize , newproduct - > next = null;
7 Ställ huvudet variabeln . Om huvudet variabeln är NULL , är detta den första delen läggs till i listan , så ställ in huvudet variabeln att peka på det :
om products_head = newproduct ,
8 Förbered för en annan ( products_head ! ) variabel. I andra fall , svansen variabla pekar på den sista punkten på listan , så ställ in nästa värde att peka på den nya posten :
annat products_tail - > next = newproduct ,
9 Uppdatera svansen peka på den nya sista elementet , i båda fallen :
products_tail = newproduct ;
visa listan
10 Skapa en annan temporär variabel som pekar till datastruktur :
PRODUCT_DATA * produkt ,
11 Ställ din temporär variabel till huvudet variabel :
produkt = products_head ,
12 Loop genom elementen , kontrollera var och en och sedan ställa den temporära variabeln till nästa pekare att färdas till nästa:
samtidigt ( produkt ) {if ( ! produkt - > product_code = 15 ) { produkten = produkten - > next ; } }
13 Kolla om variabeln är NULL . Om så , du hittade aldrig objektet :
om avkastning 0; ( produkt ! ) . Annars pekar den på det objekt du söker : retur produkt - > product_size ,
Clean Up Your Work
14 deallokera listan när programmet avslutas , eftersom inte alla operativsystem kommer att hantera detta automatiskt
15
Loop så länge huvudet variabeln inte är null : .
stund ( products_head ) {
16 Store nästa pekare i svansen variabel temporärt :
products_tail = products_head - > next ;
17 deallokera elementet :
gratis ( products_head ) ;
18 Ställ huvudet pekaren till pekaren du sparade i steg 4 :
products_head = products_tail ; }