Проблема в том, что ваш while
цикл идет далеко.Вы хотите остановиться, когда current
указывает на последний элемент списка, так что вы можете добавить к нему.Но вы идете на один шаг дальше и останавливаетесь, когда current == NULL
.Тогда уже слишком поздно присваивать current->next
.
Сначала вам нужно инициализировать head->next
в NULL.
head = malloc(sizeof(thing));
head->next = NULL;
Избавиться от строки:
head = NULL;
, поскольку это перезаписывает результат malloc()
.
Тогда ваш цикл while должен проверять current->next
, а не current
сам по себе:
while (current->next != NULL) {
current = current->next;
}
И когда вы добавляетеновый узел, вы должны также установить его next
указатель на NULL
:
current->next = malloc(sizeof(thing));
current->next->next = NULL;
Это должно решить вашу проблему.