指针返回和下一个节点

时间:2015-03-05 11:10:17

标签: pointers

我是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;

我想知道是否有人有解决方案?感谢

1 个答案:

答案 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;
}