【问题标题】:Queue Linked list dequeue functionQueue 链表出列功能
【发布时间】:2015-11-13 22:24:35
【问题描述】:

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

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 没有返回值,所以我不明白它的目的。有人可以解释一下这个功能是如何工作的吗? 是否需要一个单独的函数来获取从队列中移除的值?

【问题讨论】:

  • 看起来更像是pop_front,您在其中删除头部的元素然后返回它,只是在这里而不是返回它,您需要一个输出参数。

标签: c++ linked-list queue


【解决方案1】:

函数参数被传递了一个引用。因此,当它在函数中设置时,它会设置作为参数传递的变量:

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

【讨论】:

  • 非常感谢,帮助我理解的比我读过的笔记更清晰
  • 如果这回答了您的问题,请接受。此外,请查看此处以获取对 C++ 标准库的良好参考,包括 std::queue:en.cppreference.com/w/cpp/container/queue
【解决方案2】:

您传递一个与队列的第一个对象具有相同类型的变量的引用。在该方法中,第一个项目的数据被保存到这个变量中,然后该项目被删除。因此,您只需一个函数调用即可获取队列头项的数据并将其删除。

传递对函数的引用并为其分配某些内容是 void 函数返回某些内容的一种方式。您还可以创建一个具有相同目的且具有返回值且不带参数的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多