`
chenpingtai2008
  • 浏览: 57419 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

队列的顺序实现

阅读更多
队列的特点是先进先出,以下是队列的顺序实现,用数组完成。

//本例采用的是循环队列。
//front指示下一个出队列的元素位置
//front+size指示下一个入队列的元素位置
//因为采用循环队列,出去队列留出来的位置可作为以后入队列的元素存放的位置
//解决这种问题的方式可用%来实现
//用(front+1)%data.length;(front+size)%data.length分别来实现
//循环的问题
public class ArrayQueue<E> {
private E[] data=(E[]) new Object[10];
private int front=0;//出队列的位置
private int size=0;//加入的元素的个数
//入队列操作
    public void add(E target){
    //如果数组到极限,创建新数组,并拷贝原来元素到新数组中
    if(size==data.length){
    E[] tempdata=(E[])new Object[data.length+5];
    //采用的是循环队列
for(int i=0;i<data.length;i++){
tempdata[i]=data[(front+i)%data.length];
}
data=tempdata;
front=0;
       }
       data[(front+size)%data.length]=target;
       size++;
    }
    //判断是否为空
    public boolean isEmpty(){
       return size==0;
    }
    //出队列操作
    public E remove(){
    if(isEmpty()){
    return null;
    }else{
    E temp=data[front];
    front=(front+1)%data.length;
    size--;
    return temp;
    }
    }
   
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics