c++库有没有循环队列
时间: 2024-04-11 19:24:08 浏览: 17
C++标准库中没有直接提供循环队列的实现。但是你可以通过使用数组或者自定义数据结构来实现循环队列。循环队列是一种环形的数据结构,可以在固定大小的数组中实现队列的功能。
以下是一个简单的循环队列的实现示例:
```cpp
#include <iostream>
const int MAX_SIZE = 10;
class CircularQueue {
private:
int front; // 队头指针
int rear; // 队尾指针
int data[MAX_SIZE]; // 存储数据的数组
public:
CircularQueue() {
front = rear = -1;
}
bool isEmpty() {
return front == -1 && rear == -1;
}
bool isFull() {
return (rear + 1) % MAX_SIZE == front;
}
void enqueue(int value) {
if (isFull()) {
std::cout << "Queue is full. Cannot enqueue." << std::endl;
return;
}
if (isEmpty()) {
front = rear = 0;
} else {
rear = (rear + 1) % MAX_SIZE;
}
data[rear] = value;
}
void dequeue() {
if (isEmpty()) {
std::cout << "Queue is empty. Cannot dequeue." << std::endl;
return;
}
if (front == rear) {
front = rear = -1;
} else {
front = (front + 1) % MAX_SIZE;
}
}
int getFront() {
if (isEmpty()) {
std::cout << "Queue is empty." << std::endl;
return -1;
}
return data[front];
}
};
int main() {
CircularQueue queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
std::cout << "Front element: " << queue.getFront() << std::endl;
queue.dequeue();
std::cout << "Front element after dequeue: " << queue.getFront() << std::endl;
return 0;
}
```
这个示例中,我们使用数组来存储数据,并使用两个指针`front`和`rear`来表示队头和队尾的位置。通过取模运算来实现循环的效果。`enqueue`函数用于入队操作,`dequeue`函数用于出队操作,`getFront`函数用于获取队头元素。