带有一个外部指针的链接节点的循环链
C++ a circular chain of linked nodes with one external pointer
我被要求编写一个基于链接的队列实现,该队列使用一个循环链接的节点链来表示队列中的元素。
也只使用一个尾指针,像这样:图14
我所面临的问题是,我不能将后节点指针连接到第一个,因为我只允许使用单个尾指针。
我正在使用的类:
#include "Queue.h"
#include "Node.h"
template<class T>
class CircularLinkedQueue : public Queue<T> {
private:
Node<T>* back;
int length;
public:
CircularLinkedQueue();
virtual ~CircularLinkedQueue();
bool isEmpty() const;
bool enqueue(T* element);
T* dequeue();
T* peek() const;
};
我遇到问题的代码行:
back->setNext(??); // How do I connect it to the front?
请帮我指出正确的方向,我一直在寻找类似的东西,但我找不到任何东西。谢谢你!
当你在列表末尾添加一个节点时,只需将其指向第一个节点本身,例如
T* enqueue(T* element){
if(Queue == NULL){
element.setNext(element);
return element;}
T* cur=queue;
while(cur->next != queue)cur=cur->next;
cur->next=element;
element->next=queue;
return queue;}
这段代码的作用就是当输入一个新元素时它会改变刚刚添加的元素的指针指向队列的起点也就是根元素注意我是从后面插入元素的
在有一个指向队列尾部的外部指针的循环链接队列中,队列中的每个节点都应该有一个data组件和一个next组件。
使用一个指向队列尾部的外部指针的好处是,您可以立即访问队列的尾部和前部。
要访问队列的前端,使用外部指针访问后节点的"next"组件。如下:nodePtr front = back->next;
现在您有一个指向队列前面的外部指针(nodePtr)。
相关文章:
- C++循环链表删除,计数从下一个节点开始
- C++循环链接列表 - 删除所有节点
- 我写了一个函数来删除循环链接列表中的第 1 个节点,但输出显示无限次"55 44 33 22 11 99",那么我该如何解决呢?
- 循环单链表:从列表中删除特定节点
- 使用循环在链接列表的前面插入一个节点
- C++-从单链循环列表中的任何索引中删除一个节点
- 正在从循环双链接列表中删除节点
- 查询循环中的节点自引用
- 创建一个C++预排序迭代器,为循环提供树节点
- 在循环双向链表的第一个节点之前/之后插入的算法是什么?
- 删除循环双向链表中的节点
- 无法遍历树 - 节点被重新遍历了大量次,但仍然是非循环的
- 从后到前的打印节点进入无限循环
- boostpropertytree在循环中添加节点
- 我的程序在将节点读入链表后不断循环,只重复显示一个节点
- 有向循环图中两个节点之间的路径数
- C++链表节点创建导致无限循环
- 使用rapidxml在节点中循环
- 读取文件".txt"并将每行的数据分配给循环列表中的新节点C++
- 布尔函数始终为真,单向链表中的尾节点删除创建无限循环