Объяснение кода (связанный список C)
Это не мой код Я взял этот код с этого сайта:
http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
Я использую для справочного материала о том, как построить связанный список. Я'Я немного запутался в том, что происходит. Может кто-нибудь, пожалуйста, объясните мне, что происходит. Я'Отмечу, что меня смущает 1-5.
#include
#include
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;ival = i;
curr->next = head; //2
head = curr; //3
}
curr = head; // 4
while(curr) { //5
printf("%d\n", curr->val);
curr = curr->next ;
}
голова = NULL → почему заголовок имеет значение NULL? Я знаю, что вы должны (я делаю это по привычке), но я неЯ действительно знаю почему.
curr->следующий = голова → Я так и не понял этого. Может быть, у меня есть свое определениеголова" неправильно, но в обычном связанном списке, это начальный узел или последний узел в списке? Я'Мы всегда предполагали, что это был начальный узел, но в этой строке это выглядит так:последний узел
голова = курс → Почему мы устанавливаем это равным curr?
curr = head → и затем установка curr = head после завершения цикла.
while (curr) → Просто чтобы убедиться, что это прохождение по списку и оно эквивалентно while (curr! = NULL), верно?