Предполагая, что я вас правильно понял, и оба head
и next
являются умными указателями, вы можете избежать этого, выполнив:
head = head->next;
или эквивалентный.Ваша «старая» голова будет удалена, а старый второй предмет будет повышен до головы.Все в одном последовательном изменении, без глубокой рекурсии.Единственным предварительным условием для этого является то, что заголовок не должен начинаться с NULL
.
Как отметил Майк в комментарии, если целью является удаление всего списка, вы можете повторить это в цикле.