C: Wie funktioniert der Strukturknoten * next? [geschlossen]

geschlossen . Diese Frage benötigt Details oder Klarheit . Derzeit werden keine Antworten akzeptiert.

Kommentare

  • Wenn Sie es einfach als Node* deklarieren, zeigt es nirgendwo hin, sondern teilt dem Compiler lediglich mit, dass es ' ist ein Zeiger auf einen Node (oder gar keinen Node). Es muss einen tatsächlichen Code geben, der den Zeiger next so setzt, dass er auf den nächsten Node zeigt. Warst du darüber verwirrt?
  • Da es (noch) kein struct Node gibt, existiert kein Mitglied davon. Daher zeigt kein Mitglied irgendwo hin.

Antwort

Ihr Code ist nur ein kleiner Teil einer verknüpften Liste.

Die Idee ist, dass Ihre Liste aus n Vorkommen der Struktur besteht, die Sie „Knoten“ genannt haben. Sie benötigen einen Zeiger auf den ERSTEN von ihnen. Dieser Zeiger gibt Ihnen den Speicherort dieser ersten Struktur an (normalerweise fordern Sie den Speicherplatz dafür manuell mit malloc an). Die Struktur dieses Speicherblocks wird durch Ihre Struktur „Node“ definiert. Es sagt Ihnen, dass es zuerst einige Bytes für das int gibt (sizeof int gibt an, wie mutch) und dann einige Bytes für eine Adresse (dies ist Ihr Zeiger „next“). Auf dem letzten Element Ihrer verknüpften Liste verwenden Sie normalerweise null als Wert für next. Auf diese Weise können Sie überprüfen, ob Ihr aktives Element das letzte ist. Um ein Element zu Ihrer Liste hinzuzufügen, müssen Sie den Speicher dafür mallocieren und den nächsten Zeiger des letzten Elements auf den Speicherort ändern, den malloc ausgegeben hat. (Und vergessen Sie nicht, den nächsten Zeiger des gerade erstellten Elements auf null zu setzen.)

Auf diese Weise funktioniert eine verknüpfte Liste. Hoffe das hilft ein bisschen! Bild der verknüpften Liste

Kommentare

  • Eigentlich wäre es korrekter, wenn der Pfeil von " next " auf Objekt " (oder vielleicht sogar noch besser in der oberen linken Ecke des folgenden Felds). So wie es aussieht, sieht es so aus, als ob ' auf das " nächstes " Mitglied zeigt der Struktur, aber in Wirklichkeit zeigt ' auf die nächste Dateninstanz ' Basisadresse. Sie können auch auswählen, auf was das letzte Element ' s " next " zeigen soll. es kann z.B. NULL (in diesem Fall kann die Liste nur in eine Richtung durchlaufen werden) oder sie kann auf das erste Element der Liste zeigen (eine kreisförmig verknüpfte Liste bilden).
  • Das können Sie natürlich auch haben Jedes Mitglied der Liste zeigt sowohl auf die " next " als auch auf die vorheriges " Element der Liste. Dies erfordert etwas mehr Buchhaltung beim Ändern der Liste, ermöglicht jedoch das Durchlaufen der Liste in jede Richtung, die beim Lesen vorteilhaft sein kann. Wie bei allem anderen in der Technik ist ' ein Kompromiss.

Antwort

Dies ist Teil einer Typdefinition. Es an und für sich weist auf nichts hin, aus dem gleichen Grund, aus dem Sie eine echte Couch und einen Fernseher nicht in ein Wohnzimmer stellen können, das auf einer Reihe von Bauplänen für ein Haus gezeichnet ist. Es gibt einfach an, „was hier sein soll“.

Die Art und Weise, wie auf den nächsten Knoten in einer verknüpften Liste verwiesen wird, besteht darin, dass jemand, der die Knoten tatsächlich erstellt, dem Feld einen Wert zuweist beschrieben durch diese Definition, die ein Zeiger ist, der die Adresse eines anderen Node enthält.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.