public class MyCircularQueue {
int[] dates;
private int head = 0;
private int tail = 0;
private int size = 0;
/** Initialize your data structure here. Set the size of the queue to be k. */
public MyCircularQueue(int k) {
dates = new int[k];
}
/** Insert an element into the circular queue. Return true if the operation is successful. */
public boolean enQueue(int value) {
if(size == dates.length){
return false;
}
if(size == 0){
dates[head]= value;
dates[tail]= value;
tail++;
size++;
return true;
}
dates[tail] = value;
tail++;
size++;
if(tail == dates.length){
tail = 0;
}
return true;
}
/** Delete an element from the circular queue. Return true if the operation is successful. */
public boolean deQueue() {
if(size == 0){
return false;
}
head++;
if(head == dates.length){
head = 0;
}
size--;
return true;
}
/** Get the front item from the queue. */
public int Front() {
if(size == 0){
return -1;
}
return dates[head];
}
/** Get the last item from the queue. */
public int Rear() {
if(size == 0){
return -1;
}
if(tail == 0){
return dates[dates.length-1];
}
return dates[tail - 1];
}
/** Checks whether the circular queue is empty or not. */
public boolean isEmpty() {
return size == 0;
}
/** Checks whether the circular queue is full or not. */
public boolean isFull() {
return size == dates.length;
}
public static void main(String[] args) {
MyCircularQueue myCircularQueue = new MyCircularQueue(3);
myCircularQueue.enQueue(1);
myCircularQueue.enQueue(2);
myCircularQueue.enQueue(3);
myCircularQueue.enQueue(4);
System.out.println(myCircularQueue.Rear());
}
}
设计循环队列
最新推荐文章于 2023-05-25 22:40:15 发布