Queue 链表出队函数
Queue Linked list dequeue function
目前正在学习各种链表队列和栈。我一直在阅读有关各种队列功能的一些说明。我无法理解所提供的出队功能。
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。它的目的是什么?我从代码中看到它被分配了来自前端节点的数据值,但是函数 dequeue 没有 return 值,所以我不明白它的目的。有人可以解释一下这个功能是如何工作的吗?
是否需要单独的函数来获取从队列中删除的值?
函数参数传递了一个引用。因此,当它在函数中设置时,它会设置作为参数传递的变量:
CintQueue q; // define queue
// fill q with ints
int i;
q.Dequeue(i); // i is set here
您传递了与队列第一个对象具有相同类型的变量的引用。在该方法中,第一个项目的数据被保存到这个变量中,然后该项目被删除。所以你可以通过一个函数调用获取queues head item的数据并删除它。
传递对函数的引用并为其赋值是 void 函数 return 的一种方式。您还可以使用 return 值且不带参数创建具有相同目的的方法。
目前正在学习各种链表队列和栈。我一直在阅读有关各种队列功能的一些说明。我无法理解所提供的出队功能。
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。它的目的是什么?我从代码中看到它被分配了来自前端节点的数据值,但是函数 dequeue 没有 return 值,所以我不明白它的目的。有人可以解释一下这个功能是如何工作的吗? 是否需要单独的函数来获取从队列中删除的值?
函数参数传递了一个引用。因此,当它在函数中设置时,它会设置作为参数传递的变量:
CintQueue q; // define queue
// fill q with ints
int i;
q.Dequeue(i); // i is set here
您传递了与队列第一个对象具有相同类型的变量的引用。在该方法中,第一个项目的数据被保存到这个变量中,然后该项目被删除。所以你可以通过一个函数调用获取queues head item的数据并删除它。
传递对函数的引用并为其赋值是 void 函数 return 的一种方式。您还可以使用 return 值且不带参数创建具有相同目的的方法。