/**
* @author xnl
* @Description:
* @date: 2022/8/2 21:35
*/
public class Solution {
}
// s使用数组
class MyCircularQueue {
private int front;
private int rear;
private int capacity;
private int[] elements;
public MyCircularQueue(int k) {
capacity = k + 1;
elements = new int[capacity];
rear = front = 0;
}
/**
* 入队
* @param value
* @return
*/
public boolean enQueue(int value) {
if (isFull()){
return false;
}
elements[rear] = value;
rear = (rear + 1) % capacity;
return true;
}
public boolean deQueue() {
if (isEmpty()){
return false;
}
front = (front + 1) % capacity;
return true;
}
public int Front() {
if (isEmpty()){
return -1;
}
return elements[front];
}
public int Rear() {
if (isEmpty()){
return -1;
}
return elements[(rear - 1 + capacity) % capacity];
}
public boolean isEmpty() {
return rear == front;
}
public boolean isFull() {
return ((rear + 1) % capacity) == front;
}
}
// 使用链表
class MyCircularQueue2 {
ListNode head;
ListNode tail;
int size;
int capacity;
public MyCircularQueue2(int k) {
capacity = k;
size = 0;
}
/**
* 入队
* @param value
* @return
*/
public boolean enQueue(int value) {
if (isFull()){
return false;
}
ListNode node = new ListNode(value);
if (head == null){
head = tail = node;
} else {
tail.next = node;
tail = node;
}
size++;
return true;
}
public boolean deQueue() {
if (isEmpty()){
return false;
}
head = head.next;
size--;
return true;
}
public int Front() {
if (isEmpty()){
return -1;
}
return head.value;
}
public int Rear() {
if (isEmpty()){
return -1;
}
return tail.value;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == capacity;
}
class ListNode{
int value;
ListNode next;
public ListNode(int value){
this.value = value;
}
}
}