C: Hur fungerar struct node * nästa? [stängd]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Stängt . Den här frågan behöver detaljer eller tydlighet . För närvarande accepteras inte svar.

Kommentarer

  • Att bara förklara det som Node* gör att det inte pekar någonstans, det säger bara till kompilatorn att det ' en pekare till någon Node (eller ingen Node alls). Det måste finnas en faktisk kod som ställer in next -pekaren för att peka på nästa Node. Är det det du var förvirrad om?
  • Eftersom det inte finns (ännu) någon struct Node finns ingen medlem i det. Således pekar ingen medlem någonstans.

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! länkad listabild

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *