用Java数组实现队列

用数组实现。队首出队,队尾进队。

成员变量有:队首front,队尾back,队列长度size,对象数组data。

成员方法有:

构造方法,

获取队列的长度getSize(),

元素出队,在队首出队

元素入队,在对尾入队

public class Queue { 
    private int front;//队首
	private int back;//队尾
	private int size;//队列长度
	private Object[] data;

    public Queue(){//构造函数
       data=new Object[10];
    } 

	public int getSize(){//获取队列的长度
		return size; 
	} 

	public Object dequeue(){//出队,在队首出队
		Object o=null; 
		if(size>0){ 
			size--;
			o=data[front];
            	data[front]=null; //便于gc回收
            	front=(front>data.length-1)?0:front+1;
		} 
		return o;
    } 

    public void enqueue(Object o){//进队,在队尾进队
       if(size>=data.length){ 
         Object[] newData=new Object[data.length*2]; //数组扩容两倍
         for(int i=0;i

讨论: 如果经过 10 次入队后,队列似乎是满了。但是有可能队列中只存在几个元素,因为若干元素已经出队了。

那么解决办法是:只要frontback到达数组的尾端,它又绕回了开头,这叫做循环数组。

你可能感兴趣的:(算法数据结构)