我正在尝试使用 C++ 实现一个简单的链表。我可能在某个地方犯了一个愚蠢的错误。通过这个我想学习 C++ 中的类和指针。 对于代码
#include <iostream>
using namespace std;
class node
{
public:
node* next;
int data;
node(int d);
void append(int d);
};
node::node(int d)
{
data = d;
next = NULL;
}
void node::append(int d)
{
node nw = node(d);
if(next==NULL)
next = &nw;
else
{
node *n = next;
while((*n).next!=NULL)
{
n = (*n).next;
}
(*n).next = &nw;
}
}
我得到 81 作为 1 旁边的节点。
int main()
{
node n = node(1);
n.append(3);
n.append(2);
n.append(81);
n = *(n.next);
cout<< n.data << '\n';
}
请帮我弄清楚我哪里出错了。
最佳答案
可能还有其他错误,但这是非常危险的:您正在创建一个局部变量来表示新节点:node nw = node(d);
,然后您创建最后一个节点在列表中指向 nw
。但是,由于 nw
是局部变量,函数返回时它将不复存在。所以最后一个节点的 next
指针现在指向不再存在的东西。您需要使用 new node(d)
(它返回一个指向 node
的指针)来创建一个对象,该对象将在函数返回后继续存在。
关于c++ - C++中一个简单的链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6384255/