Я новичок в C, и теперь я пытаюсь изучить основы связанного списка. Следующий код - это только сегмент прохождения связанного списка.Перемещение связанного списка
#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;
}
Я смущен, что выход «Пуск-> следующая» не NULL, а твердый постоянный адрес. Но я назначил NULL для запуска-> next перед циклом for и только изменить компонент в «списке» (list-> item и list-> next), а не в компоненте «start». Итак, почему компонент в «старте» изменяется?
Должен быть 'Е ("% р \ т% р \ п", (пустота *) Пуск-> следующая , (void *) list-> next); ' – LPs
Он * был * NULL на начальной итерации, или вы этого не заметили? – WhozCraig