对不起所有的问题,但这个功能给了我很多问题。我差不多完成了,但我还有最后一个bug。这个功能的关键是每天一次弹出3个学生。那一天完成,它将移动到第二天并弹出下一个3(有可能移动到下一个队列列表)。我的num2代表当天,每次完成3名学生时,它应该将这一天增加1。
当我运行程序时,我得到了一些奇怪的结果。如果我保持在同一个队列列表中,那一天会增加很好,但是当我跳跃时,它会在第一个增量上停留。例如:
我有两个队列列表
1st Queue list:Rachel,Ed,Amy,Matt 第二队列:约翰,丹尼尔,尼克
结果:
第一天: 瑞秋, 埃德, 艾米
第二天:
马特,是最后一个学生...... 约翰, 丹尼尔,第2天:
尼克,是最后一个学生..
关于为什么会发生这种情况的任何想法?
主要功能
int s = 0;
int d = 1;
cout<<"How many Student do you currently have appointments with? "<<endl;
cin>>s;
cout<<"What day would you like to start seeing students?"<<endl;
cin>>d;
cout<<"Day "<<d<<endl;
s = priority1->enqueue(s,d);
s = priority2->enqueue(s,d);
s = priority3->enqueue(s,d);
s = priority4->enqueue(s,d);
队列函数调用
int enqueue(int x, int& m)
{
n->pop_front(x,m);
}
LinkList Pop_front函数
int pop_front(int x, int& m)
{
int num = x;
int num2 = m;
string value;
while(front != NULL)
{
if(num == 3)
{
num = 0;
num2++;
cout<<endl<<endl<<"Day "<<num2<<endl;
}
while(num<3)
{
Node *temp = front;
if(front->next)
{ value = front->name;
front = front->next;
front->prev = NULL;
size--;
delete temp;
cout<<value<<", "<<endl;
num++;
continue;
}
cout<<endl;
if(front->next == NULL)
{
value=front->name;
front = NULL;
back = NULL;
delete temp;
size--;
cout<<value<<", is the last student in this priority Queue list"<<endl;
num++;
return num;
}
}
}
}
答案 0 :(得分:2)
您传递m
代表reference
的日期:
int pop_front(int x, int& m)
但是你在函数体中使用了num2
:
num2++;
cout<<endl<<endl<<"Day "<<num2<<endl;
因此,您不会在每次调用m
时传递更新的enqueue
。该引用仅适用于m
,当您将m
分配给num2
时,您正在创建新变量并且它们未链接,因此对num2
的更改不会反映为m
。