Kommentarer
Svar
Din kod är bara en liten bit av en länkad lista.
Tanken är att din lista består av n förekomster av strukturen du kallade ”Node”. Du behöver en pekare till FÖRSTA av dem, den här pekaren berättar minnesplatsen för den här första strukturen (du begär vanligtvis utrymme för detta manuellt med malloc). Strukturen för detta minnesblock definieras av din struct ”Node”. Det berättar att det först finns några byte för int (sizeof int berättar hur mutch) och sedan finns det några byte för en adress (detta är din pekare ”nästa”). På det sista objektet i din länkade lista använder du vanligtvis null som värde för nästa, så kan du kontrollera om ditt aktiva objekt är det sista. För att lägga till ett objekt i din lista måste du malloc minnet för det och ändra nästa pekare för det sista objektet till minnesplatsen malloc gav ut. (Och glöm inte att ställa in nästa pekare för objektet du just skapade till null.)
På så sätt fungerar en länkad lista. Hoppas det hjälper lite!
Kommentarer
- Egentligen vore det mer korrekt att ha pilen från " nästa " peka till " Objekt " (eller kanske ännu bättre, längst upp till vänster i följande ruta). Som det ser ut ser det ut som att det ' pekar på " nästa " -medlem av strukturen, men i verkligheten pekar den ' på nästa datainstans ' s basadress. Du kan också välja vad det sista elementet ' s " nästa " ska peka på; det kan peka på t.ex. NULL (i vilket fall listan bara kan passeras i en riktning), eller så kan den peka på det första elementet i listan (bildar en cirkulär länkad lista).
- Du kan naturligtvis också ha varje medlem i listan pekar både på " nästa " och " föregående " element i listan. Detta kräver lite mer bokföring när du ändrar listan, men gör det möjligt att korsa listan i vilken riktning som helst som kan vara fördelaktig vid läsning. Som med allt annat inom teknik är det ' en avvägning.
Svar
Detta är en del av en typdefinition. Det i sig själv pekar inte på någonting, av samma anledning som att du inte kan sätta en riktig soffa och TV inuti ett vardagsrum ritat på en uppsättning ritningar för ett hus. Det anger helt enkelt ”detta är vad som ska gå här.”
Sättet det pekar på nästa nod i en länkad lista är att när någon faktiskt skapar noderna tilldelar de ett värde till fältet beskrivs av den definitionen, som är en pekare som innehåller adressen till en annan Node
.
Node*
gör att det inte pekar någonstans, det säger bara till kompilatorn att det ' en pekare till någonNode
(eller ingenNode
alls). Det måste finnas en faktisk kod som ställer innext
-pekaren för att peka på nästaNode
. Är det det du var förvirrad om?struct Node
finns ingen medlem i det. Således pekar ingen medlem någonstans.