如何从QUEUE获取元素

时间:2015-10-30 04:04:48

标签: c++ if-statement

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"消息。

但我能从队列中获取正确的元素,但收到错误的消息。我的代码出了什么问题?

2 个答案:

答案 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;