int get(){
if (head == 0) {
return -999;
}
else {
int v = head->item;
link t = head->next;
delete head; head = t;
return v;
}
}
这是我调用get函数的开关案例
if (q.get() != -999) {
cout << q.get() << " element removed from Queue" << endl;
}
else {
cout << "nothing to get; queue is empty" << endl;
}
当我从get函数得到一个像1这样的元素时,我得到"nothing to get; queue is empty"
消息。
但我能从队列中获取正确的元素,但收到错误的消息。我的代码出了什么问题?
答案 0 :(得分:0)
因为你两次调用get()。
一旦进入if(q.get() != -999)
另一个cout << q.get() << "element removed from queue" << endl;
这意味着您删除队列中的两个元素。如果您的队列只有一个元素,您将收到空消息。
答案 1 :(得分:0)
您实际上是在这里致电q.get()
两次:
if (q.get() != -999) // First time
cout << q.get() << " element removed from Queue" << endl; // Second time
else
cout << "nothing to get; queue is empty" << endl;
您应该将q.get()
的结果存储到变量中,并将其检查为:
int lastValue = q.get();
if (lastValue != -999)
cout << lastValue << " element removed from Queue" << endl;
else
cout << "nothing to get; queue is empty" << endl;