2015-03-05 2 views
0

Я новичок в 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"); 

} 

Однако, я всегда эту ошибку: «Нарушение прав доступа пишущего местоположение»

Интересно, если кто-нибудь есть решение? Спасибо

ответ

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; 
} 
Смежные вопросы