我正在实现一个链表类的副本构造函数,该副本构造函数将进行深层复制。这是我的代码:
List( const List & rhs ) {
Node* rhsFront = rhs.header->next;
Node* prev = header;
while (rhsFront) {
prev->next = new Node(rhsFront->data, nullptr);
rhsFront = rhsFront->next;
prev = prev->next;
}
}
但是,它在此行崩溃:
prev->next = new Node(rhsFront->data, nullptr);
我做错了什么?
最佳答案
Node* prev = header;
我猜那里的头文件没有初始化,因此导致prev-> next是一个随机指针(最有可能是0),并试图写入该点使程序崩溃。如果是这样,这可能会起作用。
List( const List & rhs ) {
Node* rhsFront = rhs.header->next;
header = new Node(rhs.header->data, nullptr);
Node* prev = header;
while (rhsFront) {
prev->next = new Node(rhsFront->data, nullptr);
rhsFront = rhsFront->next;
prev = prev->next;
}
}