C: Hoe werkt struct node * next? [gesloten]

Gesloten . Deze vraag heeft details of duidelijkheid nodig. Het accepteert momenteel geen antwoorden.

Reacties

  • Gewoon declareren als Node* maakt het nergens naar verwijzen, het vertelt de compiler alleen dat het ' is een pointer naar een Node (of helemaal geen Node). Er moet een echte code zijn die de next -aanwijzer zo instelt dat deze naar de volgende Node wijst. Is dat waar je in de war over was?
  • Aangezien er (nog) geen struct Node is, bestaat er geen lid van. Dus geen enkel lid wijst ergens.

Antwoord

Je code is slechts een klein stukje van een gekoppelde lijst.

Het idee is dat je lijst bestaat uit n exemplaren van de struct die je “Node” noemde. Je hebt een pointer nodig naar de EERSTE, deze pointer vertelt je de geheugenlocatie van deze eerste struct (je vraagt de ruimte hiervoor meestal handmatig aan met malloc). De structuur van dit geheugenblok wordt bepaald door uw struct “Node”. Het vertelt je dat er eerst enkele bytes zijn voor de int (sizeof int vertelt je hoe mutch) en dan zijn er enkele bytes voor een adres (dit is je pointer “volgende”). Op het laatste item van uw gekoppelde lijst gebruikt u meestal null als waarde voor het volgende, op deze manier kunt u controleren of uw actieve item het laatste is. Om een item aan uw lijst toe te voegen, moet u het geheugen ervoor malloceren en de volgende pointer van het laatste item wijzigen in de geheugenlocatie die malloc heeft opgegeven. (En vergeet niet de volgende pointer van het item dat je zojuist hebt gemaakt op null te zetten.)

Op deze manier werkt een gelinkte lijst. Ik hoop dat dit een beetje helpt! afbeelding van gekoppelde lijst

Reacties

  • Eigenlijk zou het juister zijn om de pijl van " volgende " naar Object " (of misschien nog beter, in de linkerbovenhoek van het volgende vak). Zoals het er nu uitziet, ziet het eruit alsof het ' s wijst naar het " volgende " lid van de struct, maar in werkelijkheid is het ' verwijzend naar de volgende data-instantie ' s basisadres. U kunt ook kiezen waar het laatste element ' s " volgende " naar moet wijzen; het kan wijzen op b.v. NULL (in dat geval kan de lijst maar in één richting worden doorlopen), of het kan verwijzen naar het eerste element van de lijst (waardoor een circulaire gekoppelde lijst wordt gevormd).
  • U kunt natuurlijk ook hebben elk lid van de lijst verwijst zowel naar de " volgende " en de " vorig " element van de lijst. Dit vereist een beetje meer boekhouding bij het wijzigen van de lijst, maar het staat het doorlopen van de lijst in elke richting toe, wat voordelig kan zijn bij het lezen. Zoals met al het andere in engineering, is het ' een afweging.

Antwoord

Dit maakt deel uit van een typedefinitie. Het verwijst op zichzelf nergens naar, om dezelfde reden dat je geen echte bank en tv in een woonkamer kunt plaatsen die is getekend op een set blauwdrukken voor een huis. Het specificeert eenvoudig “dit is wat” hier moet gaan. “

De manier waarop het naar het volgende knooppunt in een gekoppelde lijst verwijst, is dat wanneer iemand de knooppunten daadwerkelijk maakt, ze een waarde aan het veld toekennen beschreven door die definitie, die een pointer is die het adres bevat van een andere Node.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *