循环队列的源代码
以下是循环队列的 C++ 源代码:
#include <iostream>
using namespace std;
class CircularQueue {
private:
int* queue; // 队列数组指针
int front; // 队头指针
int rear; // 队尾指针
int maxSize; // 队列最大长度
public:
// 构造函数
CircularQueue(int size) {
maxSize = size + 1;
queue = new int[maxSize];
front = 0;
rear = 0;
}
// 判断队列是否为空
bool isEmpty() {
return front == rear;
}
// 判断队列是否已满
bool isFull() {
return (rear + 1) % maxSize == front;
}
// 入队
bool enqueue(int data) {
if (isFull()) {
return false;
}
queue[rear] = data;
rear = (rear + 1) % maxSize;
return true;
}
// 出队
bool dequeue(int& data) {
if (isEmpty()) {
return false;
}
data = queue[front];
front = (front + 1) % maxSize;
return true;
}
// 返回队头元素
bool getFront(int& data) {
if (isEmpty()) {
return false;
}
data = queue[front];
return true;
}
// 返回队列长度
int getSize() {
return (rear - front + maxSize) % maxSize;
}
// 打印队列元素
void print() {
int size = getSize();
int i = front;
while (size--) {
cout << queue[i] << " ";
i = (i + 1) % maxSize;
}
cout << endl;
}
// 析构函数
~CircularQueue() {
delete[] queue;
}
};
int main() {
CircularQueue q(5); // 创建一个最大长度为 5 的循环队列
// 入队
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
// 打印队列元素
q.print(); // 输出:1 2 3 4 5
// 入队失败,队列已满
q.enqueue(6); // 返回 false
// 出队
int data;
q.dequeue(data); // data = 1
// 打印队列元素
q.print(); // 输出:2 3 4 5
// 获取队头元素
q.getFront(data); // data = 2
// 打印队列元素
q.print(); // 输出:2 3 4 5
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/gA2y 著作权归作者所有。请勿转载和采集!