2016-11-19 1 views
0

나는 큐를 만들고 그 안에 요소를 나열하려고합니다. 나는 create_queue와 print_queue라는 두 가지 함수를 만들었다. 포인터를 참조로 보내서 전 세계적으로 선언 할 필요가 없습니다.C++ deque 생성 및 인쇄

#include<iostream> 
using namespace std; 

struct Nod { 
    int info; 
    Nod* next, *back; 
}; 

void create_queue(Nod*& p, Nod*& u) 
{ 
    Nod *c = new Nod; 
    cout << "c->info: "; cin >> c->info; 
    if (!p) 
    { 
     p = c; 
     p->back = NULL; 
     p->next = NULL; 
     u = p; 
    } 
    else 
    { 
     u->next = c; 
     c->back = u; 
     u = c; 
     u->next = NULL; 
    } 
} 

void print_queue(Nod*& p, Nod*& u) 
{ 
    Nod *c = p; 
    while (c) { 
     cout << c->info << " "; 
     c = c->next; 
    } 
} 


int main() 
{ 
    int n, i = 1; 
    Nod *p, *u = new Nod; 
    cout << "Nr nod: "; cin >> n; 
    while (i <= n){ 
    create_queue(p, u); 
    i++; 
    } 
    print_queue(p, u); 
    getchar(); 
} 

디버거에서 알 수 있듯이 p-> info에 액세스 할 수 없습니다. 무엇이 문제입니까?

답변

-1

수정할 수있는 객체를 함수에 전달하려면 추울 필요가 없습니다 Nod*& (참조 주소!) 유형. 대신 공통 포인터 Nod*을 사용하십시오.