写一个能够设计队列类和循环队列类,实现存储和取数功能的c++代码
时间: 2024-04-30 07:18:31 浏览: 88
队列类的代码:
```c++
class Queue {
private:
int* data;
int front;
int rear;
int capacity;
public:
Queue(int capacity) {
this->capacity = capacity;
data = new int[capacity];
front = rear = 0;
}
~Queue() {
delete[] data;
}
bool isEmpty() {
return front == rear;
}
bool isFull() {
return (rear + 1) % capacity == front;
}
bool enqueue(int val) {
if (isFull()) return false;
data[rear] = val;
rear = (rear + 1) % capacity;
return true;
}
bool dequeue(int& val) {
if (isEmpty()) return false;
val = data[front];
front = (front + 1) % capacity;
return true;
}
};
```
循环队列类的代码:
```c++
class CircularQueue {
private:
int* data;
int front;
int rear;
int capacity;
int count;
public:
CircularQueue(int capacity) {
this->capacity = capacity;
data = new int[capacity];
front = rear = count = 0;
}
~CircularQueue() {
delete[] data;
}
bool isEmpty() {
return count == 0;
}
bool isFull() {
return count == capacity;
}
bool enqueue(int val) {
if (isFull()) return false;
data[rear] = val;
rear = (rear + 1) % capacity;
count++;
return true;
}
bool dequeue(int& val) {
if (isEmpty()) return false;
val = data[front];
front = (front + 1) % capacity;
count--;
return true;
}
};
```
两个类的主要区别在于循环队列类中增加了一个变量 count 来记录队列中元素的个数,方便判断队列是否为空或者已满。同时,在入队和出队操作时,需要对 count 进行相应的增加或减少操作。
阅读全文