用c++设计一个队列类,实现的操作有初始化队列、入队、出队、判队空
时间: 2023-07-10 13:41:10 浏览: 94
数据结构与算法C++实现 循环顺序队列的初始化,求长度,入队,出队
5星 · 资源好评率100%
好的,这里是一个基于数组实现的队列类的示例代码:
```c++
#include <iostream>
const int MAX_SIZE = 100; // 队列的最大容量
class Queue {
public:
Queue();
~Queue();
void init(); // 初始化队列
void enqueue(int data); // 入队
int dequeue(); // 出队
bool isEmpty(); // 判队空
private:
int m_data[MAX_SIZE]; // 存储队列数据的数组
int m_front; // 队头指针
int m_rear; // 队尾指针
};
Queue::Queue() {
init();
}
Queue::~Queue() {
}
void Queue::init() {
m_front = 0;
m_rear = -1;
}
void Queue::enqueue(int data) {
if (m_rear == MAX_SIZE - 1) { // 队列已满
std::cout << "Queue is full, cannot enqueue." << std::endl;
return;
}
m_rear++;
m_data[m_rear] = data;
}
int Queue::dequeue() {
if (isEmpty()) { // 队列为空
std::cout << "Queue is empty, cannot dequeue." << std::endl;
return -1;
}
int data = m_data[m_front];
m_front++;
return data;
}
bool Queue::isEmpty() {
return m_front > m_rear;
}
int main() {
Queue queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
std::cout << queue.dequeue() << std::endl; // 输出 1
std::cout << queue.dequeue() << std::endl; // 输出 2
std::cout << queue.dequeue() << std::endl; // 输出 3
std::cout << queue.dequeue() << std::endl; // 输出 "Queue is empty, cannot dequeue."
return 0;
}
```
在这个示例代码中,我们使用了一个数组来存储队列中的数据,并使用两个指针 `m_front` 和 `m_rear` 分别表示队头和队尾的位置。初始化队列时,我们将 `m_front` 设为 0,`m_rear` 设为 -1。入队操作时,我们将 `m_rear` 加 1,然后将数据存入数组中。出队操作时,我们先判断队列是否为空,如果不为空,就将队头的数据取出,并将 `m_front` 加 1。判队空操作就是判断 `m_front` 是否大于 `m_rear`。
当然,这只是一个基本的队列实现,还有很多优化和改进的空间,比如使用链表实现队列、循环队列等等。
阅读全文