没想通怎么满额复用初始化队列空间,因为实际有效的存储位会少一个
package com.kali.structure;
/**
* 前提:这是一个环形队列,目的为了复用空间
* 通过取模算法用数组来实现队列并可复用
* 1.队列为空的条件判断
* front == rear
* 2.队列满的条件判断
* (rear+1) % maxSize == front
* 3.添加元素
* rear = (rear+1) % maxSize
* 4.获取元素
* front = (front+1) % maxSize
* ********* 3、4步取模原因是为了让指针周期性复用
* 5.遍历元素
* front + offset()
* 解析:maxSize - front得到之后元素,加上rear中间的叠加区直接取maxSize模可得
* offset = (maxSize - front + rear) % maxSize
* 6.获取头元素
* return queue[front]
* 在算法的设计过程中将一个位置空出来作为约定,所以实际的有效元素会少一个
* 这个所谓的约定就是一个预留空间,始终在rear的后一个位置
*/
public class RingQueue {
private int front;
private int rear;
private int maxSi