我在链表的深层副本上不断出现分段错误。我在我的Copy Contructor和我的赋值运算符(operator =)中使用了这个深层副本,并得出结论是这就是seg faulting。
bigint::Node* bigint::deepcopy(bigint::Node* target){
bigint::Node* current = target;
bigint::Node*cpy = new Node;
cpy->digit = current->digit;
Node* const hd = cpy;
current = current->next;
while(current != nullptr){
bigint::Node* tmp = new Node;
tmp->digit = current->digit;
cpy->next = tmp;
cpy = cpy->next;
current = current->next;
}
return hd;
}
我的节点结构如下:
private:
struct Node{
int digit;
Node* next;
};
Node* head;
static Node* deepcopy(Node* target);
我的课程全部关闭,只显示与此功能相关的私密内容。提前感谢任何建议。
答案 0 :(得分:0)
使用deepcopy
函数时,必须确保参数target
不是nullptr。因此,您应该在if (target == nullptr)
功能的开头检查deepcopy
。
此外,在while循环结束后,您应该将新列表的尾部设置为nullptr。
根据您发布的信息,您似乎在空指针上使用->digit
或->next
。
如果您仍然遇到此错误,则最好提供示例代码。