C ++创建并打印deque

时间:2016-11-19 15:28:09

标签: c++ pointers deque

我想创建一个双端队列并列出其中的元素。我为此创建了两个函数:create_queue和print_queue。我发送指针(头部和尾部)作为参考,所以我不必全局声明它们。

#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-&gt; info。 有什么问题?

1 个答案:

答案 0 :(得分:-1)

要将可以修改的对象传递给函数,您不需要那个丑陋的Nod*&(引用的地址!)类型。改为使用通用指针Nod*