2015-11-13 150 views
0

我目前在学习各种链表的队列和栈。我正在阅读关于各种队列功能的一些笔记。我无法理解提供的出队功能。队列链接列表出队函数

void CintQueue::Dequeue(int& item) //Remove front Item from the Queue 
{ 
    Node *TempPtr; 

    TempPtr = m_qFront; 
    item = m_qFront->data; 
    m_qFront = m_qFront->next; 
    if (m_qFront == NULL) 
     m_qRear = NULL; 
    delete TempPtr; 
} 

我不明白为什么有一个参数被传递给出队。它的目的是什么?我从代码中看到它正在从前端节点分配数据值,但函数dequeue没有返回值,所以我不明白它的用途。有人可以解释这个功能是如何工作的吗? 是否需要单独的函数来获取从队列中删除的值?

+0

看起来更像是一个'pop_front',你可以在这里删除头部元素然后返回它,只有在这里,而不是返回它,你需要一个输出参数。 – AndyG

回答

0

函数参数传递一个引用。因此,当它在功能获取设置,它设置这是作为参数传递的变量:您传递队列的第一个对象具有相同类型的变量的引用

CintQueue q; // define queue 
// fill q with ints 
int i; 
q.Dequeue(i); // i is set here 
+0

非常感谢,帮助我比我读过的笔记更清楚 – user3429270

+0

如果这回答您的问题,请接受它。另外,请在这里查看对C++标准库的很好的参考,包括std :: queue:http://en.cppreference.com/w/cpp/container/queue –

0

。在该方法中,第一个项目的数据被保存到这个变量中,然后该项目被删除。所以你可以得到队列头项目的数据,并且只需要一个函数调用就可以删除它。

将引用传递给函数并为其分配内容是void函数返回某些内容的一种方式。你也可以用一个返回值和没有参数的方法创建一个具有相同目的的方法。