为什么要使用双指针来创建队列
why is a double pointer being used to create a Queue?
我有两个类Node和Queue。在Queue构造函数中,我们需要在堆中创建一个Node类型的数组。我的问题是,为什么我们应该使用双指针Node **Q
,然后像这样创建一个数组Q=new Node*[size]
,而我们本可以用一个指针创建一个节点数组?如Node *Q
和Q = new Node[size]
class Node
{
public:
Node *lchild;
int data;
Node *rchild;
};
class Queue {
private:
int front;
int rear;
int size;
Node **Q;
public:
Queue(){front=rear=-1;size=10;Q=new Node*[size];}
Queue(int size){front=rear=-1;this->size=size;;Q=new
Node*[size];}
void enqueue(Node *x);
Node *dequeue();
int isEmpty(){ return front==rear;}
};
首先,让我们明确一下,我们正在研究两种不同的数据结构:
- 一个由
Node
对象定义的二叉树 - 由固定大小缓冲区(可能是环形缓冲区(支持的队列
还有一种算法使用这些数据结构。基于其中一个注释,该算法从排队的节点构建一个二叉树。换句话说,该算法希望修改原始Node
对象,而不希望修改它们的副本。
因此,分配Node *
数组的原因是队列不必复制Node
对象。相反,入队的指针与后来出队的指针完全相同。这允许链接算法对原始节点进行操作,并因此具有所需的效果。
相关文章:
- 在C++中创建队列 - 什么是 malloc 错误?
- 避免使用 boost::进程间::消息队列创建文件
- 是否可以使用简单队列创建优先级队列
- C++ Poco - 如何创建通知队列的向量?
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- 如何使用用户输入创建字符串队列?
- 使用加速进程间创建消息队列 - 内存访问冲突
- 为什么我不能在 Windows 中的 rabbitmq 中创建队列?
- 为队列创建C 全局变量
- 创建多类队列C++
- C 在标题文件中创建具有结构定义的结构的队列
- 我有一个问题,创建了C 中阻塞队列的向量
- 无法创建支持传输队列的 VkDevice
- 关于使用我自己创建的类使用优先级队列的问题
- 从调度队列块 [ swift / c++ ] 创建线程
- 尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白
- 在磁盘C 上的特定位置中创建队列
- 如何创建队列阵列
- 如果我尝试在C++中创建队列,如何使队列达到特定大小?
- 尝试创建队列 - C++崩溃的问题