/**
* 用数组实现队列
* @author : wangtb
* @date : 2019-10-04 22:28
*/
public class Array2Queue {
/**
* 数据
*/
private Integer[] arr;
/**
* 长度
*/
private Integer size;
/**
* 开始位置
*/
private Integer start;
/**
* 结束位置
*/
private Integer end;
public Array2Queue(int initSize) {
if (initSize < 0) {
throw new IllegalArgumentException("The init size is less than 0");
}
arr = new Integer[initSize];
size = 0;
start = 0;
end = 0;
}
public void push(int obj) {
if (size == arr.length) {
throw new ArrayIndexOutOfBoundsException("The queue is full");
}
size++;
arr[end] = obj;
end = end == arr.length - 1 ? 0 : end + 1;
}
public Integer poll() {
if (size == 0) {
throw new ArrayIndexOutOfBoundsException("The queue is empty");
}
size--;
int tmp = start;
start = start == arr.length - 1 ? 0 : start + 1;
return arr[tmp];
}
}