用c++实现循环队列的初始化插入与删除
时间: 2024-10-28 15:07:43 浏览: 46
循环队列(Circular Queue)是一种特殊的线性表,它的最后一个元素的下一个位置可以看作是第一个元素的位置,形成一个环形结构。在C++中,我们可以使用数组来实现循环队列,通过两个指针`front`和`rear`分别表示队头和队尾。
以下是简单的循环队列的初始化、插入和删除操作:
1. 初始化:
```cpp
template <typename T>
class CircularQueue {
private:
int capacity; // 队列容量
int front, rear; // 队首和队尾索引,初始值为 -1 表示队列为空
T* queue; // 存储数据的动态数组
public:
CircularQueue(int size) : capacity(size), front(-1), rear(-1), queue(new T[capacity]) {}
~CircularQueue() { delete[] queue; } // 析构函数释放内存
// 其他方法...
};
```
这里我们创建了构造函数,初始化容量、设置队首和队尾为-1,并分配相应大小的动态数组。
2. 插入(enqueue):
```cpp
void enqueue(const T& value) {
if ((rear + 1) % capacity == front) // 队满
return;
rear = (rear + 1) % capacity; // 更新队尾
queue[rear] = value;
}
```
如果队尾溢出,即 `(rear+1)%capacity == front`,则不执行插入操作;否则,将新元素放入队尾并更新队尾指针。
3. 删除(dequeue):
```cpp
T dequeue() {
if (front == rear) // 队空
return T(); // 或抛异常
T value = queue[front]; // 保存队首元素
front = (front + 1) % capacity; // 移动队首指针
return value;
}
```
如果队列为空,则返回默认值或抛出异常;否则,删除并返回队首元素,然后更新队首指针。
阅读全文