请编写C++代码,实现一个队列类Queue,要求具有以下方法: voi enqueue(int val):将一个元素添加到队列的尾部。 int dequeue():删除队列的头部元素,并返回该元素的值。 bool isEmpty():判断队列是否为空。 bool isFull():判断队列是否已满。
时间: 2024-02-11 15:09:54 浏览: 62
好的,以下是实现Queue类的C++代码:
```c++
class Queue {
private:
int* data; // 存储队列元素的数组
int front; // 队首指针
int rear; // 队尾指针
int size; // 队列容量
public:
Queue(int size) { // 构造函数,初始化队列
data = new int[size];
front = rear = -1;
this->size = size;
}
~Queue() { // 析构函数,释放内存
delete[] data;
}
void enqueue(int val) { // 入队
if (isFull()) {
cout << "Queue is full." << endl;
return;
}
if (isEmpty()) front = 0; // 如果队列为空,将front指针指向第一个元素
rear++; // 将rear指针指向下一个空位
data[rear] = val; // 将元素添加到队列尾部
}
int dequeue() { // 出队
if (isEmpty()) {
cout << "Queue is empty." << endl;
return -1;
}
int val = data[front]; // 获取队列头部元素的值
if (front == rear) front = rear = -1; // 如果队列只有一个元素,重置front和rear指针
else front++; // 否则将front指针指向下一个元素
return val;
}
bool isEmpty() { // 判断队列是否为空
return front == -1 && rear == -1;
}
bool isFull() { // 判断队列是否已满
return rear == size - 1;
}
};
```
使用方法如下:
```c++
Queue q(5); // 创建一个容量为5的队列
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
cout << q.dequeue() << endl; // 输出1
cout << q.dequeue() << endl; // 输出2
q.enqueue(4);
q.enqueue(5);
q.enqueue(6); // 队列已满,输出“Queue is full.”
cout << q.dequeue() << endl; // 输出3
cout << q.dequeue() << endl; // 输出4
cout << q.dequeue() << endl; // 输出5
cout << q.dequeue() << endl; // 队列已空,输出“Queue is empty.”,返回-1
```
阅读全文