概括
- 始终在一端插入数据,另一端删除数据
- 先进先出(FIFO,First Input First Output)
- 插入和删除时间复杂度O(1)
循环队列
通过 双指针 + 数组 实现循环队列
public class QueueDemo {public static void main(String[] args) {MyQueue myQueue = new MyQueue();myQueue.enQueue(3);myQueue.enQueue(5);myQueue.enQueue(6);myQueue.enQueue(8);myQueue.enQueue(1);myQueue.deQueue();myQueue.deQueue();myQueue.deQueue();myQueue.enQueue(2);myQueue.enQueue(4);myQueue.enQueue(9);myQueue.print();}public static class MyQueue {private final int[] arr = new int[10];private int front;private int rear;public void enQueue(int element) {if ((rear + 1) % arr.length == front) {throw new RuntimeException("队列已满!");}arr[rear] = element;rear = (rear + 1) % arr.length;}public int deQueue() {if (rear == front) {throw new RuntimeException("队列已空!");}int remove = arr[front];front = (front + 1) % arr.length;return remove;}public void print() {for (int i = front; i != rear; i = (i + 1) % arr.length) {System.out.println(arr[i]);}}}}
