Вот код:
while (temp->next != NULL)
{
temp = temp->next;
}
Итак - что происходит, когда temp
начинается как или становится NULL?Скажите в конце связанного списка.
Ответ - ваше условие цикла while проверяет NULL->next
, что является нарушением памяти, поскольку ваша программа (вероятно) не владеет памятью, скажем, по адресу0x00000008 (NULL равен нулю, а ->
создает смещение памяти при компиляции).
Как насчет:
while (temp != NULL)
{
temp = temp->next;
}