Ich bin neu in C und jetzt versuche ich, die Grundlagen der verknüpften Liste zu lernen. Der folgende Code ist nur das Segment, in dem eine verknüpfte Liste durchlaufen wird.Eine verknüpfte Liste durchlaufen
#include <stdio.h>
#include <stdlib.h>
struct node
{
int item;
struct node *next;
};
int main()
{
struct node *start,*list;
int i;
start = (struct node *)malloc(sizeof(struct node));
list = start;
start->next = NULL;
for(i=0;i<10;i++)
{
list->item = i;
printf("%p\t%p\n",start->next,list->next);
list->next = (struct node *)malloc(sizeof(struct node));
list = list->next;
}
return 0;
}
Ich bin verwirrt, dass die Ausgabe von „Start-> next“ nicht NULL ist, sondern eine feste Konstante Adresse. Aber ich habe NULL als Anfangs-> nächsten vor der for-Schleife zugewiesen und ändere nur die Komponente in "list" (list-> item und list-> next), nicht die Komponente in "start". Warum wird die Komponente in "Start" geändert?
sein sollte 'printf ("% p \ p \ n t%", (void *) Start-> weiter , (void *) list-> next) '' – LPs
Es * war * NULL bei der ersten Iteration, oder hast du das nicht bemerkt? – WhozCraig