实现循环队列的基本操作
时间: 2023-09-03 21:08:16 浏览: 95
循环队列是一种环形的队列,它的队尾指针在达到队列的最大容量之后,会回到队列的起始位置。这种队列可以更有效地利用存储空间,因为它避免了队列指针到达队列尾部时的“溢出”问题。
循环队列的基本操作包括:
1. 初始化队列:创建一个循环数组,并将队头和队尾指针都初始化为0。
2. 入队:向队尾插入一个元素,并将队尾指针加1。如果队列已满,则插入失败。
3. 出队:弹出队头的元素,并将队头指针加1。如果队列为空,则弹出失败。
4. 队列长度:返回队列中元素的个数,即队尾指针减去队头指针。
下面是一个简单的循环队列的实现,以C++代码为例:
```c++
const int MAX_SIZE = 10; // 队列的最大容量
class CircularQueue {
private:
int queue[MAX_SIZE]; // 队列的存储数组
int front; // 队头指针
int rear; // 队尾指针
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; // 队列已满,插入失败
queue[rear] = x;
rear = (rear + 1) % MAX_SIZE;
return true;
}
bool dequeue(int &x) { // 出队
if (isEmpty()) return false; // 队列为空,弹出失败
x = queue[front];
front = (front + 1) % MAX_SIZE;
return true;
}
int size() { // 队列长度
return (rear - front + MAX_SIZE) % MAX_SIZE;
}
};
```
使用循环队列时,需要注意队列满和队列空的情况,以及队尾指针的回到队头的位置。
阅读全文