class MyCircularQueue {
vector<int> queue;
int frontIdx;
int rearIndx;
int length;
public:
MyCircularQueue(int k) {
queue.resize(k);
frontIdx = -1;
rearIndx = -1;
length = 0;
}
bool enQueue(int value) {
if (length == queue.size()) return false;
if (length == 0)
{
frontIdx = 0;
rearIndx = -1;
}
rearIndx++;
if (rearIndx % queue.size() == 0)
{
rearIndx = 0;
queue[rearIndx] = value;
}
else {
queue[rearIndx] = value;
}
length++;
return true;
}
bool deQueue() {
if (length == 0) return false;
queue[frontIdx] = -1;
frontIdx++;
if (frontIdx % queue.size() == 0) {
frontIdx = 0;
}
length--;
return true;
}
int Front() {
if (length == 0) return -1;
return queue[frontIdx];
}
int Rear() {
if (length == 0) return -1;
return queue[rearIndx];
}
bool isEmpty() {
if (length == 0) return true;
return false;
}
bool isFull() {
if (length == queue.size()) return true;
return false;
}
};