package oder;
/*队列*/
public class Queue {
private int [] queueArray;
private int maxSize;
private int front;//存储队列头元素的下表
private int rear;//存储队列尾元素的下表
private int length;//队列长度
public Queue(int maxSize){
this.maxSize = maxSize;
queueArray = new int [maxSize];
front = 0;
rear = -1;
length = 0;
}
//插入
public void insert(int elem) throws Exception{
if(isFull()){
throw new Exception("队列已满,不能进行插入操作!");
}
//如果队尾指针已到达数组的末端,插入到数组的第一个位置
if(rear == maxSize - 1){
rear = -1;
}
queueArray [++rear] = elem;
length++;
}
//移除
public int remove() throws Exception{
if(isEmpty()){
throw new Exception("队列为空,不能进行移除操作!");
}
int elem = queueArray [front++];
//如果队头指针已到达数组末端,则移除数组的第一个位置
if(front == maxSize){
front = 0;
}
length--;
return elem;
}
//查看队头元素
public int peek() throws Exception{
if(isEmpty()){
throw new Exception("队列内没有元素!");
}
return queueArray [front];
}
//获取队列长度
public int size(){
return length;
}
public boolean isEmpty(){
return (length == 0);
}
public boolean isFull(){
return (length == maxSize);
}
}