我正在实现一个链表类的复制构造函数,它将进行深度复制。这是我的代码:
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;
我猜测那里的 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;
}
}
关于c++ - 链表深拷贝构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320856/