队列的特点是先入先出,可以有多种实现方式,今天我们使用数组来简单实现一下
/**
* 使用数组实现简单的队列结构
* 第一种实现:一个位置只使用一次,head和tail不断地移动
* 入队一个元素,tail后移;出队一个元素,head后移;
* 如果size<1说明队列空了;如果tail>=dataArray.length-1说明队列满了,需要扩容
*/
public class MyArrayQueue {
String[] dataArray;
private int size;
private int head;
private int tail;
public MyArrayQueue(){
dataArray=new String[8];
size=0;
head=0;
tail=-1;
}
public MyArrayQueue(int length){
dataArray=new String[length];
size=0;
head=0;
tail=-1;
}
//往队列尾部添加一个元素
public void append(String data){
//如果队列已满,则扩容
if(tail>=dataArray.length-1){
String[] tempArray = new String[dataArray.length*2];
for(int i=0;i<size;i++){
tempArray[i]=dataArray[head+i];
}
dataArray=tempArray;
head=0;
tail=size-1;
}
tail++;
dataArray[tail]=data;
size++;
}
//从队列头部出一个元素
public String remove1(){
if(size<1){
System.out.println("队列为空");
return null;
}else{
String result = dataArray[head];
head++;
size--;
return result;
}
}
}
这种实现方式就是不停的去往后排队,只要队列中的位置全被使用过了,就换新的数组,下一篇,我们将对这种结构进行优化