阅读量:110
#include
#define MAX_SIZE 10
class CircularQueue {
private:
int front, rear;
int queue[MAX_SIZE];
public:
CircularQueue() {
front = -1;
rear = -1;
}
bool isEmpty() {
return front == -1 && rear == -1;
}
bool isFull() {
return (rear + 1) % MAX_SIZE == front;
}
void enqueue(int value) {
if (isFull()) {
std::cout << "Queue is full. Cannot enqueue.\n";
return;
}
if (isEmpty()) {
front = 0;
rear = 0;
} else {
rear = (rear + 1) % MAX_SIZE;
}
queue[rear] = value;
std::cout << value class="hljs-string">" enqueued to the queue.\n";
}
void dequeue() {
if (isEmpty()) {
std::cout << "Queue is empty. Cannot dequeue.\n";
return;
}
std::cout << queue class="hljs-string">" dequeued from the queue.\n";
if (front == rear) {
front = -1;
rear = -1;
} else {
front = (front + 1) % MAX_SIZE;
}
}
void display() {
if (isEmpty()) {
std::cout << "Queue is empty.\n";
return;
}
int i = front;
while (i != rear) {
std::cout << queue class="hljs-string">" ";
i = (i + 1) % MAX_SIZE;
}
std::cout << queue class="hljs-string">"\n";
}
};
int main() {
CircularQueue q;
q.enqueue(10);
q.enqueue(20);
q.enqueue(30);
q.display();
q.dequeue();
q.display();
q.enqueue(40);
q.display();
return 0;
}