和622题很像。
LeetCode第 622 题:设计循环队列 (C++)_qq_32523711的博客-CSDN博客
class MyCircularDeque {
private:
int head = 0; // 队首
int tail = 0; // 队尾的下一个
int capacity; // 容量
int *array;
public:
MyCircularDeque(int k) {
head = 0;
tail = 0;
capacity = k +1;
array = new int[capacity];
}
bool insertFront(int value) {
if ((tail+1) % capacity == head) return false;
head = (head-1+capacity) % capacity;
array[head] = value;
return true;
}
bool insertLast(int value) {
if ((tail+1) % capacity == head) return false;
array[tail] = value;
tail = (tail+1) % capacity;
return true;
}
bool deleteFront() {
//队空,删除失败
if (head == tail) return false;
head = (head+1) % capacity;
return true;
}
bool deleteLast() {
//队空,删除失败
if (head == tail) return false;
tail = (tail-1+capacity) % capacity;
return true;
}
int getFront() {
if (head == tail) return -1;
return array[head];
}
int getRear() {
if (head == tail) return -1;
return array[(tail-1+capacity) % capacity];
}
bool isEmpty() {
return head == tail;
}
bool isFull() {
return (tail+1) % capacity == head;
}
};