Implementing a linked list: head insertion and destructor

Implementing a linked list: head insertion and destructor

I have done this:
class Node {
//
int key;
Node* next;
public:
//
Node() : key( -1 ), next( NULL ) {}
Node( int i, Node* j ) : key( i ), next( j ) {}
//
~Node() { delete next; }
//
static void head_insertion( Node* & head, int i );
void print_list();
};
void Node::head_insertion( Node* & head, int i ) {
cout << "insert() 1 head = " << head << endl;
// append the current list to n
Node n(i, head);
cout << "address of n = " << &n << endl;
// make n the new head
head = &n;
//
cout << "insert() 2 head = " << head << endl;
}
Head insertion doesn't work:
insert() 1 head = 0x7fff56821518
address of n = 0x7fff56821518
insert() 2 head = 0x7fff56821518
Segmentation fault: 11
I have two questions:
The newly created Node n in head_insertion has the same address as the
address pointed at by head. What's going on?
I wrote the destructor thinking that there would be recursive calls to the
destructors of elements next in the list. Is this correct?