struct Node {
int x;
Node *next;
};
struct List {
Node *head;
int size;
};
void add( List &l, int x ) {
l.size++;
Node *v = new Node(); // allocate memory
*v = {x, l.head}; // change list's head
l.head = v;
}
/** Почти тоже самое, но с использованием конструктора */
struct Node2 {
int x;
Node2 *next;
Node2( int x, Node2 *next ) : x(x), next(next) { }
};
void add( Node2* &head, int x ) {
head = new Node2(x, head);
}