关于队列和单链接列表的帮助? 我目前正在努力理解C++中的列表、Stacks和队列。我正在复习我的测试,遇到了一个问题,要求“使用单链接列表有效地实现队列类,没有头节点或尾节点。”

关于队列和单链接列表的帮助? 我目前正在努力理解C++中的列表、Stacks和队列。我正在复习我的测试,遇到了一个问题,要求“使用单链接列表有效地实现队列类,没有头节点或尾节点。”,c++,visual-studio-2010,visual-c++,C++,Visual Studio 2010,Visual C++,我有点被难住了,有人知道怎么做吗?你需要跟踪一个指针,指向列表中的头项和尾项 添加新项时,将尾部项的下一个指针指向新项,然后更新尾部指针 要从列表前面删除项目,只需返回标题项目,然后更新标题指针。提示:队列通常使用循环缓冲区实现。如何用单链表创建一个循环?这不是下一个复杂的层次吗,使用比单链表更有效的内存分配方案吗?@Anders我同意他使用的“循环缓冲区”在这种情况下令人困惑,但是他的意思是一个很好的提示——虽然它在双链接列表中效果更好——我只是说队列的“循环”概念也可以应用于单链接列表@rl

我有点被难住了,有人知道怎么做吗?

你需要跟踪一个指针,指向列表中的头项和尾项

添加新项时,将尾部项的下一个指针指向新项,然后更新尾部指针


要从列表前面删除项目,只需返回标题项目,然后更新标题指针。

提示:队列通常使用循环缓冲区实现。如何用单链表创建一个循环?

这不是下一个复杂的层次吗,使用比单链表更有效的内存分配方案吗?@Anders我同意他使用的“循环缓冲区”在这种情况下令人困惑,但是他的意思是一个很好的提示——虽然它在双链接列表中效果更好——我只是说队列的“循环”概念也可以应用于单链接列表@rlc:你不需要一个双链接列表。您可以使用单链表实现O(1)push and pop队列。好的,因此在队列中,只要前面或后面到达数组的末尾,它就会环绕到开头,这就是您所说的“圆”。如果没有头部或尾部节点,这有什么区别?@tehman:列表需要是一个圆,即最后一个节点上的下一个指针应该指向第一个节点(因此没有头部或尾部)。您仍然需要跟踪您在圆中的位置,但是没有像普通列表中那样的明确的头部和尾部节点。