struct Node { int const value; Node* next; }; int main() { Node* curr { new Node { 1, new Node { 2, new Node { 3, nullptr } } } }; Node* tmp { curr->next }; curr->next = tmp->next; delete tmp; tmp = curr->next; tmp->next = new Node { 4, nullptr }; while (curr != nullptr) { tmp = curr; curr = curr->next; delete tmp; } }