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);
}