队列 622. 设计循环队列
队列里面最难的也就循环队列了,循环队列思路简单
1.用数组模拟队列,先进先出,
2.通过对长度取余的方式来排放尾巴
3.队列null为 head == tail,队列满 (tail + 1)/length = head,可知会浪费一个存储空间
public class MyCircularQueue {
int[] array;
int head = 0;
int tail = 0;
int length = 0;
<pre><code>public MyCircularQueue(int k) {
array = new int[k + 1];
Arrays.fill(array, -1);
length = array.length;
}
public boolean enQueue(int value) {
if ((tail + 1) % length == head) {
return false;
}
array[tail%length] = value;
tail++;
return true;
}
public boolean deQueue() {
if (head == tail)
return false;
array[head] = -1;
head++;
return true;
}
public int Front() {
return array[head];
}
public int Rear() {
return array[tail - 1];
}
public boolean isEmpty() {
return head == tail;
}
public boolean isFull() {
return (tail + 1) % length == head;
}
public static void main(String[] args) {
MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3
System.out.println(circularQueue.enQueue(1));
System.out.println(circularQueue.enQueue(2));
System.out.println(circularQueue.enQueue(3));
System.out.println(circularQueue.enQueue(4));
System.out.println(circularQueue.Rear());
System.out.println(circularQueue.deQueue());
System.out.println(circularQueue.isFull());
System.out.println(circularQueue.Rear());
}
}
评论区