#include struct Node { int val; Node* next; }; void insert(Node*& n, int i) { n = new Node{i, nullptr}; } void print(Node const* n) { for ( ; n->next != nullptr; n = n->next ) { std::cout << n->val << std::endl; } } void deallocate(Node * n) { if ( n != nullptr ) deallocate(n->next); delete n; } int main() { Node* head{nullptr}; print(head); insert(head, 5); insert(head, 7); insert(head, 8); insert(head, 11); print(head); deallocate(head); return 0; }