C: Hvordan fungerer struct node * næste? [lukket]

Lukket . Dette spørgsmål har brug for detaljer eller klarhed . Det accepteres i øjeblikket ikke svar.

Kommentarer

  • At bare erklære det som Node* får det ikke til at pege overalt, det fortæller bare kompilatoren, at det ' en markør til nogle Node (eller slet ingen Node). Der skal være en faktisk kode, der indstiller next -markøren til at pege på den næste Node. Er det det, du var forvirret over?
  • Da der (endnu) ikke er struct Node, findes der intet medlem af det. Således peger intet medlem nogen steder.

Svar

Din kode er kun et lille stykke af en sammenkædet liste.

Ideen er, at din liste består af n forekomster af strukturen, du kaldte “Node”. Du har brug for en markør til det FØRSTE af dem, denne markør fortæller dig hukommelsesplaceringen for denne første struktur (du anmoder normalt om plads til dette manuelt med malloc). Strukturen på denne hukommelsesblok er defineret af din struct “Node”. Det fortæller dig, at der først er nogle byte til intet (sizeof int fortæller dig, hvordan mutch), og så er der nogle byte til en adresse (dette er din markør “næste”). På den sidste vare på din sammenkædede liste bruger du normalt null som værdi til næste, på denne måde kan du kontrollere, om dit aktive element er det sidste. For at tilføje et element til din liste skal du malloc hukommelsen til det og ændre den næste markør for det sidste element til den hukommelsesplacering malloc gav ud. (Og glem ikke at indstille den næste markør til det element, du lige har oprettet, til null.)

På denne måde fungerer en linket liste. Håber dette hjælper lidt! billede til linket liste

Kommentarer

  • Faktisk ville det være mere korrekt at have pilen fra " næste " til " Objekt " (eller måske endnu bedre i øverste venstre hjørne i følgende felt). Som det ser ud, ser det ud til at det ' peger på " næste " medlem af strukturen, men i virkeligheden peger den ' på den næste datainstans ' s base-adresse. Du kan også vælge, hvad det sidste element ' s " næste " skal pege på; det kan pege på f.eks. NULL (i hvilket tilfælde listen kun kan krydses i én retning), eller den kan pege på det første element på listen (danner en cirkulær sammenkædet liste).
  • Du kan selvfølgelig også have hvert medlem af listen peger både på " næste " og " forrige " element på listen. Dette kræver lidt mere bogføring, når du ændrer listen, men gør det muligt at krydse listen i enhver retning, som kan være fordelagtig ved læsning. Som med alt andet inden for teknik er det ' en afvejning.

Svar

Dette er en del af en typedefinition. Det i sig selv peger ikke på noget, af samme grund som at du ikke kan lægge en rigtig sofa og tv inde i en stue tegnet på et sæt tegninger til et hus. Det specificerer simpelthen “dette er hvad der skal gå her.”

Den måde, det peger på den næste node i en linket liste, er, at når nogen faktisk opretter noderne, tildeler de en værdi til feltet beskrevet af denne definition, som er en markør, der indeholder adressen på en anden Node.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *