设计一个循环队列QUEUE<T>,用存放队列元素,用和分别作为队头和队尾指针,并用一个标志tag队列可能空(false)或可能满((true,要求设计队列的相关基本运算算法
时间: 2023-05-27 14:02:33 浏览: 78
1. 构造函数
```cpp
QUEUE(): front(0), rear(0), tag(false) {}
```
2. 入队操作
```cpp
bool EnQueue(T elem) {
if (tag) return false; // 队列已满,插入失败
data[rear] = elem;
rear = (rear + 1) % MAX_SIZE;
if (front == rear) tag = true; // 队列已满
return true;
}
```
3. 出队操作
```cpp
bool DeQueue() {
if (IsEmpty()) return false; // 队列已空,删除失败
front = (front + 1) % MAX_SIZE;
if (front == rear) tag = false; // 队列已空
return true;
}
```
4. 获取队头元素
```cpp
T GetFront() {
if (IsEmpty()) return NULL; // 队列已空
return data[front];
}
```
5. 判断队列是否为空
```cpp
bool IsEmpty() {
return (front == rear) && !tag;
}
```
6. 判断队列是否已满
```cpp
bool IsFull() {
return (front == rear) && tag;
}
```
阅读全文