@ToString
public static class cyclicQueue{
int size;
int limit;
int[] arr ;
int pullI;
int pollI;
public cyclicQueue(int limit) {
this.limit = limit;
arr=new int[limit];
pollI=0;
pullI=0;
}
public void pull(int x){
if(size==limit){
throw new RuntimeException("over size!");
}
size++;
arr[pullI] = x;
pullI=plusOne(pullI,limit);
}
public int poll(){
if(size==0){
throw new RuntimeException("no ele!");
}
size--;
int x=arr[pollI];
arr[pollI]=0;
pollI=plusOne(pollI,limit);
return x;
}
private int plusOne(int x,int limit){
return (x+1)==limit?0:x+1;
}
}
算法之数据结构:固定长度数据实现循环队列