Erklärung des Codes (verknüpfte Liste C)

Dies ist nicht mein code. Ich nahm diesen code aus dieser website:

http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html

Ich bin mit Referenz-material, wie zum erstellen einer verknüpften Liste. Ich bin ein wenig verwirrt, was Los ist. Kann mir jemand bitte erklären, was Los ist. Ich werde mark, was ist verwirrend mich mit 1-5.

#include<stdlib.h>
#include<stdio.h>

struct list_el {
   int val;
   struct list_el * next;
};

typedef struct list_el item;

void main() {
   item * curr, * head;
   int i;

   head = NULL;   //1

   for(i=1;i<=10;i++) {
      curr = (item *)malloc(sizeof(item));
      curr->val = i;
      curr->next  = head; //2
      head = curr; //3
   }

   curr = head; //4

   while(curr) {  //5
      printf("%d\n", curr->val);
      curr = curr->next ;
   }
  1. head = NULL → warum ist Leiter wird auf NULL gesetzt? Ich weiß, dass man eigentlich (ich mache es aus Gewohnheit), aber ich weiß wirklich nicht, warum.
  2. curr->next = head → ich habe nie wirklich verstanden, diese als gut. Vielleicht habe ich meine definition von "Kopf" ist falsch, aber regelmäßig in einer verknüpften Liste, ist es der Start-Knoten oder der Letzte Knoten in der Liste? Ich habe immer vermutet, es sei der Startknoten, aber in dieser Linie sieht es aus wie es ist der Letzte Knoten.
  3. Kopf = curr → Warum setzen wir es gleich curr?
  4. curr = head > und dann die Einstellung curr = head, nachdem die Schleife fertig ist.
  5. while(curr) → Nur um sicher zu gehen, das ist die Traversierung durch die Liste, und es ist äquivalent zu while(curr != NULL) right?
Die Liste ist gebaut, durch das anbringen von Knoten, die auf dem front-end und die Anpassung der Leiter auf den neuen Knoten.
Dieser code erstellt eine verlinkte Liste, so könnte es helfen haben ein klares Verständnis von dem, was eine verkettete Liste ist: en.wikipedia.org/wiki/Linked_list

InformationsquelleAutor juice | 2013-03-15

Schreibe einen Kommentar