循环队列的基本操作伪代码c++
时间: 2024-09-28 15:05:59 浏览: 45
C++代码(《数据结构》)。
5星 · 资源好评率100%
循环队列是一种特殊的线性表,其特点是在队列的一端进行入队操作,在另一端进行出队操作,当队列满时,新的元素会从队首开始覆盖旧的元素,形成一种“循环”的效果。以下是循环队列的基本操作的C++伪代码:
```cpp
// 定义循环队列的结构体(假设数组大小为capacity)
template <typename T>
class CircularQueue {
private:
T* queueData; // 队列数据
int front; // 队头指针
int rear; // 队尾指针
int capacity;
public:
// 初始化循环队列
CircularQueue(int size) : queueData(new T[size]), front(0), rear(0), capacity(size) {}
// 判断队列是否为空
bool isEmpty() const { return front == rear; }
// 判断队列是否已满
bool isFull() const { return (rear + 1) % capacity == front; }
// 入队操作
void enqueue(T value) {
if (isFull()) {
throw "Queue is full";
}
rear = (rear + 1) % capacity; // 使用模运算实现循环
queueData[rear] = value;
}
// 出队操作
T dequeue() {
if (isEmpty()) {
throw "Queue is empty";
}
T result = queueData[front]; // 保存并移除队头元素
front = (front + 1) % capacity;
return result;
}
// 返回队首元素但不删除
T front() const {
if (isEmpty()) {
throw "Queue is empty";
}
return queueData[front];
}
// 清空队列
void clear() {
front = rear = 0;
}
// 释放内存
~CircularQueue() {
delete[] queueData;
}
};
// 示例操作
CircularQueue<int> cq(5);
cq.enqueue(10); // 入队
cq.enqueue(20);
std::cout << cq.front() << std::endl; // 输出第一个元素
阅读全文