我只是想制作一个非常简单的链表,但出于某种原因,我收到“无法访问内存”错误。我已经构建了所有其他方法,但实际上我无法创建第一个节点。语言是 C++。
构造函数如下所示:
IntListNode::IntListNode(){
data = -1;
next = this;
prev = this;
}
链表构造函数如下所示:
IntList::IntList(){
IntListNode* sentinel = new IntListNode();
}
谁能看出问题所在?谢谢。
最佳答案
这个构造函数
IntList::IntList(){
IntListNode* sentinel = new IntListNode();
}
没有意义。声明了局部变量sentinel
,在退出构造函数后会立即销毁。
还有这个构造函数
IntListNode::IntListNode(){
data = -1;
next = this;
prev = this;
}
非常困惑。最好不要显式声明构造函数并简单地使用聚合。或者至少构造函数看起来像
IntListNode( int value,
IntListNode *next = nullptr,
IntListNode *prev = nullptr )
: data( value ), next( next ), prev( prev )
{
}
我想数据的类型是 int。
并且没有哨兵节点的意义。您应该定义两个节点:最初将设置为 nullptr 的 head 和 tail。
关于c++ - 创建简单链表时无法访问内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750409/