完整代码如下:
import java.util.*;
//队列的顺序存储
public class SeqQueue<E> {
private static final int max=1000;//初始化队列的最大长度为1000
private Object[] data;//队列中的元素
private int front;//指针指向队头(删除的一端)
private int rear;//指针指向队尾(插入的一端)
//初始化,此时队列为空,指针都指向-1位置
public SeqQueue() {
this.front=-1;
this.rear=-1;
this.data=new Object[max];
}
//判断队列是否为满
public boolean isCapacity() {
return this.rear+1>=max;
}
//判断队列是否为空
public boolean isEmpty() {
return this.front==this.rear;
}
//新元素入队列
public void push(E e) {
if(isCapacity()) {
throw new RuntimeException("队列已满,无法入队");//队列为满不能插入
}
++rear;
this.data[rear]=e;//加入新元素,rear后移一位
}
//出队操作
public E pop() {
if(isEmpty()) {
throw new RuntimeException("队列为空,无法出队");
}
++front;
return (E) this.data[front];
}
//获取队头元素
public E peek() {
if(isEmpty()) {
throw new RuntimeException("队列为空");
}
return (E) this.data[front+1];//刚开始front在-1位置,所以需要+1
}
//打印队列中的所有元素
public void print() {
if(isEmpty()) {
System.out.println("此时队列为空");
return;
}
System.out.println("此时队列中共有"+(rear-front)+"个元素,从头到尾依次为:");
for(int i=front+1;i<=rear;++i) {//从对头到队尾,依次打印
System.out.print(data[i]+" ");
}
System.out.println();
}
//主函数
public static void main(String[] args) {
SeqQueue<Integer> queue=new SeqQueue<>();
queue.push(1);
queue.push(2);
queue.push(3);
queue.push(4);
queue.print();
System.out.println("队头元素为:"+queue.peek());
queue.pop();
System.out.println("队头元素为:"+queue.peek());
queue.print();
}
}