我想创建一个双端队列并列出其中的元素。我为此创建了两个函数: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。 有什么问题?
答案 0 :(得分:-1)
要将可以修改的对象传递给函数,您不需要那个丑陋的Nod*&
(引用的地址!)类型。改为使用通用指针Nod*
。