做的网站提示不安全,广州开发网站设计,环江住房和城乡建设部网站,石家庄网站建设蓝点循环队列#xff08;Circular Queue#xff09;#xff0c;又称环形缓冲区#xff0c;是一种常用的数据结构#xff0c;特别适用于资源有限的场合#xff0c;比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现#xff0c;逻辑上首尾相连#xff0…循环队列Circular Queue又称环形缓冲区是一种常用的数据结构特别适用于资源有限的场合比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现逻辑上首尾相连能够充分利用数组空间。
下面是一个用C实现的循环队列示例
#include iostream
using namespace std;class CircularQueue {
private:int *queue;int front;int rear;int size;int capacity;public:CircularQueue(int k) {capacity k 1; // 多一个空间用于区分队列满和空queue new int[capacity];front 0;rear 0;size 0;}~CircularQueue() {delete[] queue;}bool enqueue(int value) {if (isFull()) {cout Queue is full endl;return false;}queue[rear] value;rear (rear 1) % capacity;size;return true;}bool dequeue() {if (isEmpty()) {cout Queue is empty endl;return false;}front (front 1) % capacity;size--;return true;}int Front() {if (isEmpty()) {cout Queue is empty endl;return -1;}return queue[front];}int Rear() {if (isEmpty()) {cout Queue is empty endl;return -1;}return queue[(rear - 1 capacity) % capacity];}bool isEmpty() {return size 0;}bool isFull() {return size capacity - 1;}int getSize() {return size;}
};int main() {CircularQueue cq(5); // 创建容量为5的循环队列cq.enqueue(10);cq.enqueue(20);cq.enqueue(30);cq.enqueue(40);cq.enqueue(50);cout Front element: cq.Front() endl; // 输出队首元素cout Rear element: cq.Rear() endl; // 输出队尾元素cq.dequeue();cq.dequeue();cout After dequeuing two elements: endl;cout Front element: cq.Front() endl; // 输出队首元素cout Rear element: cq.Rear() endl; // 输出队尾元素return 0;
}这个示例中CircularQueue 类实现了一个循环队列支持以下操作
enqueue(int value)向队列尾部添加一个元素。dequeue()从队列头部移除一个元素。Front()获取队首元素。Rear()获取队尾元素。isEmpty()检查队列是否为空。isFull()检查队列是否已满。getSize()获取当前队列中的元素个数。
循环队列的实现利用数组和两个指针front 和 rear来追踪队首和队尾的位置通过取模操作来实现首尾相连的效果。