队列的数组实现
程序员文章站
2022-07-14 13:57:46
...
队列的数组实现
/**
* 数组模拟队列的思路:
* 1.创建一个数组Array[]保留数据;以及位置front及back,处于队列两端用于记录队列前后端的小标
* 2.创建一个用于记录队列中实际元素个数的 currentSize
* 3.创建队列的最大容量 maxSize
* 4.往队列中增加数据时: rear+1——尾指针加1
* 5.出队列时:front+1
* 6.队列空: front = rear ; 队列满: rear= maxSize-1
* @author Rocco_L
*
*/
class ArrayQueue{
private int front;
private int back;
private int maxSize;
private int[] Array;
public ArrayQueue(int AmaxSize) {
maxSize=AmaxSize ;
Array = new int [maxSize];
front = -1;
back = -1;
}
public boolean isFull(){
if(back == maxSize-1){
return true;
}return false;
}
public boolean isEmpty(){
return back == front;
}
//添加数据到队列
public void addQueue(int n){
if(isFull()){
System.out.println("队列已满");
return;
}
back++;
Array[back] = n;
}
//出队列
public int getQueue(){
if(isEmpty()){
throw new RuntimeException("队列空,不能取数据");
}
front ++;
return Array[front];
}
//显示队列
public void showQueue(){
if(isEmpty()){
System.out.println("队列空,没有数据");
return;
}
for(int i =0; i<Array.length; i++){
System.out.println("Array["+i+"]"+"="+Array[i]);
}
}
//显示队列的头数据
public int headQueue(){
if(isEmpty()){
throw new RuntimeException("队列为空");
}
return Array[front+1];
}
}