package com.yajxit.queue;
/**
* @author yaj
* 数组实现队列
*/
public class ArrayQueueDemo {
}
class ArrayQueue{
/**
* 队列的最大容量
*/
private int maxSize;
/**
* 头指针
*/
private int front;
/**
* 尾指针
*/
private int rear;
/**
* 队列的数组
*/
private int arr[];
/**
* @param arrMaxSize 队列的最大容量
* 队列初始化
*/
public ArrayQueue(int arrMaxSize){
maxSize=arrMaxSize;
front=-1;
rear=-1;
arr=new int[maxSize];
}
public boolean isFull(){
return rear==maxSize-1;
}
public boolean isEmpty(){
return rear==front;
}
/**
* @param n 入队的元素
* 入队
*/
public void addQueue(int n){
//判断队列是否满
if (isFull()){
System.out.println("队列已满");
return;
}
rear++;
arr[rear]=n;
}
/**
* @return
* 出队
*/
public int popQueue(){
//队列判空
if (isEmpty()){
throw new RuntimeException("队列为空");
}
front++;
return arr[front];
}
/**
* 遍历队列
*/
public void showQueue(){
//队列判空
if (isEmpty()){
throw new RuntimeException("队列为空,不能展示数据");
}
for (int i = 0; i < arr.length; i++) {
System.out.printf("arr[%d]----->%d",i,arr[i]);
}
}
}
该实现会有点问题,测试的时候该数组不能重复使用,只能使用一,次所以可以使用循环队列来解决该问题。