public class MyQueue {
private long []arr;//底层数组实现
private int front;//队头
private int rear;//队尾
private int size;//队列中有效数据个数
public MyQueue(){
front=0;
rear=-1;
size=0;
arr=new long[10];
}
public MyQueue(int maxsize){
front=0;
rear=-1;
size=0;
arr=new long[maxsize];
}
/*入队(队尾插入)*/
void insert(int value){
if (rear==arr.length-1){//若队列满了,继续插入的话,重置队尾
rear=-1;
}
arr[++rear]=value;
size++;
}
/**出队(队头删除)
* 返回删除的数据
*/
public long remove(){
long value=arr[front++];
if(front == arr.length) {/*当队列中数据被删完时,front == arr.length,重置front为0*/
front = 0;
}
size--;
return value;
}
/**
* 查看数据,从队头查看
*/
public long peek() {
return arr[front];
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return size == 0;
}
/**
* 判断是否满了
*/
public boolean isFull() {
return size == arr.length;
}
}
public class Test {
public static void main(String[] args) {
MyQueue mq=new MyQueue(4);
mq.insert(1);
mq.insert(2);
mq.insert(3);
mq.insert(4);
System.out.println("是否为空:"+mq.isEmpty());
System.out.println("是否满了:"+mq.isFull());
System.out.println( "队头是:"+mq.peek());
System.out.println("删除了:"+mq.remove());
System.out.println("删除后队头为"+mq.peek());
System.out.println("删除后是否为空:"+mq.isEmpty());
System.out.println("删除后是否满了:"+mq.isFull());
}
}