题目
Leetcode 622. 设计循环队列
代码(9.8 首刷自解)
class MyCircularQueue {
public:
vector<int> q;
int head, rear;
int cap;
int size;
MyCircularQueue(int k) {
cap = k;
q.resize(k);
size = 0;
head = 0;
rear = 0;
}
bool enQueue(int value) {
if(isFull())
return false;
q[rear] = value;
rear = (rear+1)%cap;
size++;
return true;
}
bool deQueue() {
if(isEmpty())
return false;
head = (head+1)%cap;
size--;
return true;
}
int Front() {
if(isEmpty())
return -1;
return q[head];
}
int Rear() {
if(isEmpty())
return -1;
return q[(rear-1+cap)%cap];
}
bool isEmpty() {
return size == 0;
}
bool isFull() {
return size >= cap;
}
};