package javaprogram;
public class Demo {
public static void main(String[] args) {
Queue queue = new Queue(3);
boolean b = queue.isEmpty();
System.out.println("判空:"+b);
System.out.println("入队列操作:");
queue.addQueue(1);
queue.addQueue(2);
queue.addQueue(3);
System.out.println("当前队列的长度:"+queue.getSize());
System.out.print("查看队内全部元素:");
queue.getAllQueue();
System.out.println("判满操作:"+queue.isFull());
System.out.println("获取头部操作:"+queue.getHead());
System.out.println("进行出队列操作");
int n = queue.out();
System.out.println("出队列的数:"+n);
System.out.println("查看队内全部元素:");
queue.getAllQueue();
System.out.println("当前队列的长度:"+queue.getSize());
}
public static class Queue{
private int maxSize = 5; //数组总容量
private int front; //队头
private int rear; //队尾
private int[] arr; //数组
private int size; //当前数组的长度
//构造器
public Queue(int maxSize){
this.maxSize = maxSize;
arr = new int[maxSize];
front = -1;
rear = -1;
size = 0;
}
//判空
public boolean isEmpty(){
return front == rear;
}
//判满
public boolean isFull(){
return rear == maxSize - 1;
}
//入队列
public void addQueue(int n){
if(isFull()){
throw new RuntimeException("队列满了,不能进行入队列操作~~~");
}
rear++;
size++;
arr[rear] = n;
}
//出队列
public int out(){
if(isEmpty()){
throw new RuntimeException("队列为空,不能进行出队列操作~~~");
}
front++;
size--;
return arr[front];
}
//显示队列中的所有的数据
public void getAllQueue(){
if(isEmpty()){
System.out.println("队列为空~~~");
return;
}
//起始位置front+1,总长度是arr.length
for(int i = front+1; i < arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
//获取队列的头数据
public int getHead(){
if(isEmpty()){
throw new RuntimeException("队列为空,不能进行此操作~~~");
}
return arr[front+1];
}
//获取队列的当前存储长度
public int getSize(){
return size;
}
}
}
效果
踩坑:
输出队列内的元素时,起始位置时front+1,终止位置arr.length
for(int i = front+1; i < arr.length;i++){
System.out.print(arr[i]+" ");
}
调了半天的bug