请用c++代码实现队列的初始化队列、判队列空、判队满、入队、出队、读队头元素
时间: 2023-08-08 12:08:17 浏览: 246
以下是使用 C++ 实现队列基本操作的示例代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 队列最大容量
class Queue {
private:
int data[MAXSIZE]; // 队列元素数组
int front, rear; // 队列头和尾指针
public:
Queue() { // 构造函数,初始化队列为空
front = rear = 0;
}
bool empty() { // 判断队列是否为空
return front == rear;
}
bool full() { // 判断队列是否已满
return (rear + 1) % MAXSIZE == front;
}
bool enqueue(int x) { // 入队
if (full()) {
return false; // 队列已满,入队失败
}
data[rear] = x;
rear = (rear + 1) % MAXSIZE;
return true; // 入队成功
}
bool dequeue(int& x) { // 出队
if (empty()) {
return false; // 队列为空,出队失败
}
x = data[front];
front = (front + 1) % MAXSIZE;
return true; // 出队成功
}
bool front_element(int& x) { // 获取队头元素
if (empty()) {
return false; // 队列为空,获取队头元素失败
}
x = data[front];
return true; // 获取队头元素成功
}
};
int main() {
Queue q;
int x;
// 入队
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
// 出队
q.dequeue(x);
cout << "dequeue: " << x << endl;
// 读队头元素
q.front_element(x);
cout << "front: " << x << endl;
// 判断队列是否为空
cout << "empty: " << q.empty() << endl;
// 判断队列是否已满
cout << "full: " << q.full() << endl;
return 0;
}
```
输出结果为:
```
dequeue: 1
front: 2
empty: 0
full: 0
```
注意,这里的队列是使用数组实现的,当队列满时需要循环利用数组空间。同时,队列需要支持元素类型的模板化,这里为了简化示例代码,只使用了整型元素。
阅读全文