Этот код не работает.
1) не создавайте свой собственный связанный список, просто используйте std::list
(или обычно лучше; std::vector
).
2) не используйте NULL
, используйте nullptr
.
3) не использовать ручное управление памятью; используйте контейнеры и умные указатели.
4) помните, что delete
указатель не волшебным образом устанавливает его на nullptr
, вы должны сделать это самостоятельно, если это необходимо.
5) утечка памяти; Вы выделяете новое хранилище и присваиваете его адрес temp
, затем немедленно перезаписываете temp
с помощью head
и забываете все о вновь выделенном хранилище.
6) Тогда вы delete temp
, что в этот момент равняется delete head->next
. Наверное, не то, что вы хотите.