设置一个环形队列 队列是3*2000的数组
时间: 2024-05-06 12:16:13 浏览: 10
首先,环形队列是一种特殊的队列,它可以不断地循环重复利用队列中的空间。在使用数组实现环形队列时,需要定义队列的首尾指针,并且注意当队列尾指针指向数组最后一个元素时,需要将其指向数组第一个元素。
下面是一个基于数组实现的环形队列的示例代码:
```c++
#include <iostream>
using namespace std;
const int MAX_SIZE = 3 * 2000;
class CircularQueue {
private:
int front; // 队列头指针
int rear; // 队列尾指针
int data[MAX_SIZE]; // 队列数组
public:
CircularQueue() {
front = rear = 0;
}
// 判断队列是否为空
bool isEmpty() {
return front == rear;
}
// 判断队列是否已满
bool isFull() {
return (rear + 1) % MAX_SIZE == front;
}
// 入队操作
bool enqueue(int x) {
if (isFull()) {
return false;
}
data[rear] = x;
rear = (rear + 1) % MAX_SIZE;
return true;
}
// 出队操作
bool dequeue(int& x) {
if (isEmpty()) {
return false;
}
x = data[front];
front = (front + 1) % MAX_SIZE;
return true;
}
// 获取队列头元素
bool getFront(int& x) {
if (isEmpty()) {
return false;
}
x = data[front];
return true;
}
};
int main() {
CircularQueue q;
int x;
// 入队
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4); // 队列已满,无法入队
// 出队
q.dequeue(x);
cout << "出队元素:" << x << endl;
q.dequeue(x);
cout << "出队元素:" << x << endl;
q.dequeue(x);
cout << "出队元素:" << x << endl;
q.dequeue(x); // 队列已空,无法出队
// 再次入队
q.enqueue(5);
q.enqueue(6);
// 获取队列头元素
q.getFront(x);
cout << "队列头元素:" << x << endl;
return 0;
}
```
在上面的示例代码中,我们使用了一个大小为 `3 * 2000` 的数组来作为环形队列的存储空间。`enqueue` 方法用于将元素入队,如果队列已满则返回 `false`;`dequeue` 方法用于将元素出队,如果队列已空则返回 `false`;`getFront` 方法用于获取队列头元素,如果队列已空则返回 `false`。在每次入队或出队操作时,需要注意更新队列的首尾指针,并且要使用取模操作来实现指针的循环增加。