malloc () Funktion in C [geschlossen]
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;.
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:
- Definiert eine temporäre Variable
x
. - Ordnet Raum für einen neuen Knoten.
- Eingänge für eine ganze Zahl (
%d
Codescanf
) und speichert sie inx
. - Speichert den Wert, der gespeichert wurde in dem Datenfeld des neu zugewiesenen Knoten
x
. - Speichert den alten „Kopf“ der Liste, auf die durch die Variable ‚
list
‘ als ein Glied in der neu zugeordneten Knoten. - 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.