/*
* 列队类
* */
public class MyQueue {
//底层使用数组
private long[] arr;
//有效数据的大小
private int elements;
//队头
private int front;
//队尾
private int end;
/*
* 默认构造方法
* */
public MyQueue(){
arr=new long[10];
elements=0;
front=0;
end=-1;
}
/*
* 带参数的构造方法,参数为数组的大小
* */
public MyQueue(int maxsize){
arr=new long[maxsize];
elements=0;
front=0;
end=-1;
}
/*
* 添加数据,从队尾插入
* */
public void insert(long value){
arr[++end]=value;
elements++;
}
/*
* 删除数据,从队头删除
* */
public long remove(){
elements--;
return arr[front++];
}
/*
* 查看数据,从队头查看
* */
public long peak(){
return arr[front];
}
/*
* 判断是否为空
* */
public boolean isEmpty(){
return elements==0;
}
/*
* 判断是否满了
* */
public boolean isFull(){
return elements==arr.length;
}
}
public class TestMyQueue {
public static void main(String[] args){
MyQueue mq=new MyQueue(4);
mq.insert(23);
mq.insert(45);
mq.insert(13);
mq.insert(1);
System.out.println(mq.isFull());
System.out.println(mq.isEmpty());
System.out.println(mq.peak());
while(!mq.isEmpty()){
System.out.print(mq.remove()+" ");
}
//当都移除数据以后,再进行insert数据,会报错,这是因为列队刚开始Insert然后移除,end变为了4,
//此时再insert会发生越界。要解决此方法,可以使用循环列队
mq.insert(23);
}
}
--为防止列队越界问题,可以使用循环列队解决
/*
* 循环列队类
* */
public class MyCycleQueue {
//底层使用数组
private long[] arr;
//有效数据的大小
private int elements;
//队头
private int front;
//队尾
private int end;
/*
* 默认构造方法
* */
public MyCycleQueue(){
arr=new long[10];
elements=0;
front=0;
end=-1;
}
/*
* 带参数的构造方法,参数为数组的大小
* */
public MyCycleQueue(int maxsize){
arr=new long[maxsize];
elements=0;
front=0;
end=-1;
}
/*
* 添加数据,从队尾插入
* */
public void insert(long value){
if(end==arr.length-1){//end指向了最后一个,让end从新指向列队头
end=-1;
}
arr[++end]=value;
elements++;
}
/*
* 删除数据,从队头删除
* */
public long remove(){
long value=arr[front++];
if(front==arr.length){
front=0;
}
elements--;
return value;
}
/*
* 查看数据,从队头查看
* */
public long peak(){
return arr[front];
}
/*
* 判断是否为空
* */
public boolean isEmpty(){
return elements==0;
}
/*
* 判断是否满了
* */
public boolean isFull(){
return elements==arr.length;
}
}
public class TestMyQueue {
public static void main(String[] args){
MyCycleQueue mq=new MyCycleQueue(4);
mq.insert(23);
mq.insert(45);
mq.insert(13);
mq.insert(1);
System.out.println(mq.isFull());
System.out.println(mq.isEmpty());
System.out.println(mq.peak());
while(!mq.isEmpty()){
System.out.print(mq.remove()+" ");
}
System.out.println();
mq.insert(23);
mq.insert(45);
mq.insert(66);
mq.insert(1);
while(!mq.isEmpty()){
System.out.print(mq.remove()+" ");
}
}
}