huvudsakliga int {
struct listNode {
int uppgifter ;
strut listNode * prev ,
strut listNode * nästa ;
};
avkastning 0;
}
" struct listNode " kodblock skapar en mall för de objekt som kommer att fylla listan . Denna mall definierar en listNode som innehåller tre delar : en datapost ( ett heltal ) och pekare till föregående och nästa objekt i listan . En pekare är en variabel som håller en minnesadress. Pekare används för att hänvisa till andra datastrukturer i djupt minne och att dynamiskt allokera minne under exekvering av kod .
2
Deklarera variabler som kommer att organisera listan struktur . Sätt detta exempel kod i textfilen :
int storlek ,
listNode * huvud ,
listNode * svans ,
svans = huvud ;
huvudet = svans ,
Dessa två pekare är början och slutet av listan , respektive. Med hjälp av dessa pekare, vet programmeraren där början av listan är och där änden är , helt enkelt genom att kontrollera om den aktuella noden är " huvud " eller " svans"- pekare. De båda hänvisar till varandra i händelse av en tom lista .
3
Skapa en enkel algoritm för att lägga till objekt från den länkade listan . Följ denna exempelkod :
void append ( int num ) {
struct listNode * spårämne = huvud ;
struct listNode * newNode = ( struct listNode * ) malloc ( sizeof ( struct listNode ) ) ;
newNode - > uppgifter = num ;
om ( huvud == null ) {
huvudet = newNode ;
tail = newNode ;
newNode - > prev = huvud ;
newNode - > next = svans ,
}
else {
samtidigt ( spårämne - > next = svans ! ) katalog
{ spårämne = spårämne - > next ; }
newNode - > prev = spårämne ;
newNode - > next = svans ,
spårämne - > next = nod;
svans = node ;
}
storlek + + ;
}
kod lägger till en nod till slutet av listan . Det börjar med att skapa en pekare till början av listan ( " spårämne " ) . Sedan skapar det en pekare till en dynamiskt allokerad block av minne som avsatts för ett nyskapat listNode ( newNode ) och ställer in uppgifter om den noden till heltalet " num " . Om huvudet pekar på noll ( vilket innebär att listan är tom , eftersom huvudet pekar på ingenting) då koden infogar nod i början av listan . Annars kommer " medan" loop kretsar genom noderna i listan tills de når den sista noden . När " spårämne " pekar på det sista elementet i listan , koden infogar noden. Den slutliga kommando lägger till " storlek " heltal , hålla koll på elementen i listan
4
Skapa en algoritm för att ta bort och objektet från slutet av listan : .
void removeNode ( ) {
om ( svans = huvud ! ) {
struct listNode * end = svans ,
tail = svans - > prev ;
free ( slutet ) ,
storlek -;
}
}
Denna kod skapar en pekare ( " end " ) till den sista element i listan ( samma element " svans " pekar på ) . Därefter svansansättningen att den pekar på elementet omedelbart före det sista elementet ( noden pekas på av den " prev " pekare av det sista elementet ) . Slutligen är det minne som används av sista noden , avses med " slut " , frigöras för vidare användning .