循环队列
- 循环队列,解决出队列时时间复杂度是O(n)的问题
- 在循环队列中,设置两个索引front、tail
- 当front == tail时,队列为空
- 当tail+1 == front时,队列满:(tail +1)%data.length == front
- 在循环队列中浪费一个空间
- 循环队列不再使用之前我们实现的动态数组作为底层实现
- 循环队列的出队的时间复杂度与入队的时间复杂度均为O(1),均摊时间复杂度
/**
* 循环队列,解决出队列时时间复杂度是O(n)的问题
* 在循环队列中,设置两个索引front、tail
* 当front == tail时,队列为空
* 当tail+1 == front时,队列满:(tail +1)%data.length == front
* 在循环队列中浪费一个空间
* 循环队列不再使用之前我们实现的动态数组作为底层实现
* 循环队列的出队的时间复杂度与入队的时间复杂度均为O(1),均摊时间复杂度
*
* @author f242
* @since V1.0.0
* 2020-03-21 15:00
*/
public class LoopQueue<E> implements Queue<E>{
private E[] data;
private int front,tail;
private int size;
public LoopQueue(int capacity){
//在循环队列的实现中我们有意识的浪费一个空间
data = (E[])new Object[capacity+1];
front = 0;
tail = 0;
size =0;
}
public LoopQueue(){
this(10);