说到如何用定长数组实现队列,我的第一个想法就是搞成循环数组,首尾指针分别控制入队出队。
事实证明这样可行,不过在首尾相撞时处理比较麻烦。
新思路:给定大小,取元素位置,放元素位置
public class QueueByArr{
int [] arr;
int getIndex=0;
int putIndex=0;
int size=0;
int limit=0;
public QueueByArr(int limit){
arr=new int[limit];
this.limit=limit;
}
public void put(int item){
if(size==limit)throw 满了
//否则就还有位置
size++;
arr[putIndex]=item;
putIndex=(putIndex+1)%limit;
}
pulic int get(){
if(size==0) throw 空了
//否则就有元素
size--;
int result=arr[getIndex];
getIndex=(getIndex+1)%limit;
return result;
}
}