请编写C++代码,实现一个队列类Queue,要求具有以下方法: voi enqueue(int val):将一个元素添加到队列的尾部。 int dequeue():删除队列的头部元素,并返回该元素的值。 bool isEmpty():判断队列是否为空。 bool isFull():判断队列是否已满。
时间: 2024-02-11 08:06:37 浏览: 13
以下是C++代码实现:
```
class Queue {
private:
int front; // 头指针
int rear; // 尾指针
int* arr; // 存储队列元素的数组
int capacity; // 队列容量
public:
Queue(int size) { // 构造函数
arr = new int[size];
capacity = size;
front = -1;
rear = -1;
}
~Queue() { // 析构函数
delete[] arr;
}
void enqueue(int val) { // 将元素添加到队列尾部
if (isFull()) {
cout << "Queue is full" << endl;
return;
}
if (isEmpty()) {
front = 0;
rear = 0;
} else {
rear = (rear + 1) % capacity;
}
arr[rear] = val;
}
int dequeue() { // 删除队列头部元素,并返回该元素的值
if (isEmpty()) {
cout << "Queue is empty" << endl;
return -1;
}
int val = arr[front];
if (front == rear) {
front = -1;
rear = -1;
} else {
front = (front + 1) % capacity;
}
return val;
}
bool isEmpty() { // 判断队列是否为空
return front == -1 && rear == -1;
}
bool isFull() { // 判断队列是否已满
return (rear + 1) % capacity == front;
}
};
```
这个队列类使用循环数组来存储队列元素,实现了队列的基本操作:添加元素到队列尾部、删除队列头部元素并返回其值、判断队列是否为空和是否已满。