我是C ++的新手。我现在正在尝试使用来回指针创建一个类。我的代码如下:
#include<iostream>
using namespace std;
class Node
{
public:
Node(int d, Node*k = NULL, Node*q = NULL) :data(d), back(k), next(q){};
int data;
Node*next; // point to next value on the list
Node*back; // point to back value on the list
};
int main()
{
int n;
Node*p = NULL;
Node*k = NULL; //k is back
while (cin >> n)
{
p = new Node(n,k);
p->back->next = p;
k = p;
}
for (; p; p = p->back)
cout << p->data << "->";
cout << "*\n";
system("pause");
}
但是,我总是有这样的错误:&#34;访问违规写入位置&#34;
我想知道是否有人有解决方案?感谢
答案 0 :(得分:0)
在循环p->back
的第一次迭代中,NULL
。您获得访问冲突,因为您取消引用它。写下这个:
while (cin >> n)
{
p = new Node(n,k);
if (p->back != NULL) // p->back == NULL in the first iteration
p->back->next = p;
k = p;
}