私はこれをしました:
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;
}
頭の挿入が機能しない:
insert() 1 head = 0x7fff56821518
address of n = 0x7fff56821518
insert() 2 head = 0x7fff56821518
Segmentation fault: 11
2 つの質問があります。
- で新しく作成された Node
n
は、head_insertion
が指すアドレスと同じアドレスを持ちますhead
。どうしたの? - リストの次の要素のデストラクタへの再帰呼び出しがあると考えて、デストラクタを書きました。これは正しいです?