Обратите внимание, что если список пуст, TempPrevious
будет неинициализированным указателем.Когда вы попытаетесь запустить цикл for
в пустом списке, TempNext
сразу же будет NULL
, и вы не выполните оператор TempPrevious = TempNext
.Поскольку вы никогда не устанавливаете для TempPrevious
значение по умолчанию, оно не будет инициализировано, и поэтому код
TempPrevious -> Next = NewNode;
будет разыменовывать указатель мусора, следовательно, ваш сбой.
Чтобы исправить это, вам либо понадобится особый случай, когда список пуст, либо использовать какой-то другой подход для вставки списка (возможно, сохраняя указатель на указатель узла для перезаписи), который изящно обрабатывает вставку в пустой список.