package com.Queue;
public class ArrayQueue {
public static void main(String[] args) {
ArrayQueues arrayQueues=new ArrayQueues(6);
arrayQueues.addQueue(1);
arrayQueues.addQueue(2);
arrayQueues.addQueue(3);
try {
arrayQueues.GetQueue();
arrayQueues.GetQueue();
arrayQueues.GetQueue();
arrayQueues.addQueue(4);
arrayQueues.addQueue(5);
arrayQueues.addQueue(6);
arrayQueues.addQueue(7);
arrayQueues.addQueue(7);
arrayQueues.showQueue();
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
}
//队列的创建类
class ArrayQueues{
private int max; //数组最大容量
private int front; //队列头
private int rear; //队列尾部
private int[] queue; //队列本身
//创建队列的构造器
public ArrayQueues(int max) {
this.max = max;
this.queue=new int[max];
front=-1;
rear=-1;
}
//判断满队列
public boolean maxQueue(){
return rear==max-1;
}
//判断空队列
public boolean emptyQueue(){
return rear==-1;
}
//添加元素
public void addQueue(int n){
//当指针rear小于队列最大值max-1 则可以加入队列,如果rear=max-1则是满队列,无法存入数据
if(maxQueue()){
if(front!=-1){
rear=-1;
}
}
this.rear++; //然rear后移
this.queue[rear]=n; //加入数据
System.out.println("加入队列成功:"+n);
}
public int GetQueue(){
//将尾指针rear+1 当front=rear 表示这是一个空队列
if(emptyQueue()){
throw new RuntimeException("队列为空");
}
else if(rear==front){
front=-1;
}
front++;
int n=this.queue[front];
System.out.println("取出数据:"+n);
return n;
}
//显示队列
public void showQueue(){
if(emptyQueue()){
System.out.println("空队列");
}
for (int i : this.queue) {
System.out.println("数据:"+i);
}
}
//显示头数据
public int HeadQueue(){
if(emptyQueue()){
throw new RuntimeException("空队列");
}
return queue[++front];
}
}
运行结果
加入队列成功:1
加入队列成功:2
加入队列成功:3
取出数据:1
取出数据:2
取出数据:3
加入队列成功:4
加入队列成功:5
加入队列成功:6
加入队列成功:7
加入队列成功:7
数据:7
数据:7
数据:3
数据:4
数据:5
数据:6
进程已结束,退出代码为 0