C++使用数组,实现一个循环队列
时间: 2024-09-10 09:05:28 浏览: 47
循环队列是一种使用有限数组空间来模拟队列操作的数据结构。在循环队列中,当数组的尾部被填满时,新的元素会从数组的头部开始覆盖旧的元素,形成一个环状结构。这样可以有效利用空间,避免了队列操作中常见的溢出问题。
下面是一个简单的C++循环队列的实现:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义队列的最大容量
class CircularQueue {
private:
int data[MAXSIZE]; // 存储队列元素的数组
int front; // 指向队列头部的指针
int rear; // 指向队列尾部的指针
public:
CircularQueue() : front(0), rear(0) {} // 构造函数
bool isFull() {
return (rear + 1) % MAXSIZE == front;
}
bool isEmpty() {
return rear == front;
}
bool enqueue(int element) {
if (isFull()) {
return false; // 队列已满,无法入队
}
data[rear] = element;
rear = (rear + 1) % MAXSIZE; // 移动尾指针
return true;
}
bool dequeue(int &element) {
if (isEmpty()) {
return false; // 队列为空,无法出队
}
element = data[front];
front = (front + 1) % MAXSIZE; // 移动头指针
return true;
}
};
int main() {
CircularQueue q;
int element;
// 入队操作
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
// 出队操作
while (!q.isEmpty()) {
q.dequeue(element);
cout << element << " ";
}
cout << endl;
return 0;
}
```
在这个循环队列的实现中,我们定义了`front`和`rear`两个指针,分别指向队列的头部和尾部。`enqueue`方法用于将元素添加到队列的尾部,而`dequeue`方法用于从队列头部移除元素。队列的`isEmpty`和`isFull`方法用于判断队列是否为空或满。
阅读全文