Frage

Kann jemand bitte erklären, das?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

Dies ist ein Code für Daten in verknüpften Liste durch C-Sprache eingeben. Der Code ist nicht vollständig, aber ich denke, es ist genug für den Zweck. Bitte erläutern Sie die Codierung im Grunde die folgenden Zeilen:

 temp=malloc(sizeof(struct node));

und

 temp->link = list;
 list=temp;.
War es hilfreich?

Lösung

malloc() wird verwendet, Speicher zuzuweisen -. In diesem Fall für einen neuen Knoten

Die addbeg() Funktion in Ihrem Code definiert hat folgende Möglichkeiten:

  1. Definiert eine temporäre Variable x.
  2. Ordnet Raum für einen neuen Knoten.
  3. Eingänge für eine ganze Zahl (%d Code scanf) und speichert sie in x.
  4. Speichert den Wert, der gespeichert wurde in dem Datenfeld des neu zugewiesenen Knoten x.
  5. Speichert den alten „Kopf“ der Liste, auf die durch die Variable ‚list‘ als ein Glied in der neu zugeordneten Knoten.
  6. Stellt der neue Knoten der neue Kopf der Liste in der Variablen ‚list‘ gespeichert werden.

Es ist eine sehr einfache Implementierung einer verketteten Liste ( http://en.wikipedia.org/wiki / LINKED_LIST ) von ganzen Zahlen.

Andere Tipps

erste Zeile:. Reservieren Sie Speicher für einen einzigen zusätzlichen Knoten der Liste

zweite Zeile: Bringen Sie die aktuelle Liste als Fortsetzung nach diesem Element

.

dritte Zeile: Stellen Sie das aktuelle Element der Anfang einer Liste

.

Temp und Liste ist nicht sichtbar in addbeg, da sie in Haupt deklariert sind. Sie müssen entweder in weitergegeben werden, um zu addbeg oder außerhalb der Haupt (global, igitt) erklärt.

malloc reserviert Speicherplatz für einen neuen Knoten.

temp->link = list

und

list = temp

macht, dass neue Knoten der Kopf der Liste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top