2016-11-19 74 views
0

我正在創建一個deque並列出其中的元素。我爲此做了兩個函數: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*