抱歉所有的问题,但这个函数给了我很多问题。我几乎完成了,但我还有最后一个错误。这个函数的要点是每天一次,送3个学生。一天完成后,它将移动到第二天,并弹出下一个3(有可能移动到下一个队列列表)。我的num2代表一天,每次它完成3个学生,它应该增加一天1。
当我运行程序时,我得到一些奇怪的结果。如果我停留在同一个队列列表上,那么这一天将会增加,但是当我跳转时,它会被卡住在第一个增量上。例子:
我有两个队列列表
第一队列:Rachel, Ed, Amy, Matt第二排:John, Daniel, Nick
结果:俊:瑞秋,艾德,艾米
Day2:
Matt是最后一个…约翰,丹尼尔,
2天:
Nick是最后一个学生。
你知道为什么会这样吗?
主要功能 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;
}
}
}
}
您正在通过reference
表示天数的m
:
int pop_front(int x, int& m)
但是你在函数体中使用num2
:
num2++;
cout<<endl<<endl<<"Day "<<num2<<endl;
,因此您不会在每次调用enqueue
时传递更新的m
。该引用仅适用于m
,当您将m
分配给num2
时,您正在创建一个新变量,并且它们没有链接,因此对num2
的更改将不会反映在m
上。