package com.xkp.data.datasructure.queue;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayQueueDemo {
private int front;
private int rear;
private int maxSize;
private int[] arr ;
public ArrayQueueDemo( int arrMaxSize) {
maxSize=arrMaxSize;
this.front = -1;
this.rear = -1;
arr=new int[maxSize];
}
public boolean isEmpty(){
return front==rear;
}
public boolean isFull(){
return rear==maxSize-1;
}
public void addQueue(int n){
if (isFull()){
System.out.println("队列已满");
return;
}
rear++;
arr[rear]=n;
}
public int getQueue(){
if(isEmpty()){
throw new RuntimeException("队列为空");
}
front++;
return arr[front];
}
public void showQueue(){
if(isEmpty()){
System.out.println("队列为空");
return;
}
for (int i = 0; i <arr.length; i++) {
System.out.printf("arr[%d]=%d\n",i,arr[i]);
}
}
public int peekQueue(){
if(isEmpty()){
throw new RuntimeException("数据为空");
}
return arr[front+1];
}
public static void main(String[] args) {
ArrayQueueDemo arrayQueueDemo=new ArrayQueueDemo(3);
char key=' ';
Scanner scanner=new Scanner(System.in);
boolean flag=true;
while (flag){
System.out.println("s(show): 显示队列");
System.out.println("e(exit): 退出程序");
System.out.println("a(add): 添加数字");
System.out.println("g(get): 获取队列值");
System.out.println("p(peek): 查看队列头数据");
key=scanner.next().charAt(0);
switch (key){
case 's':
arrayQueueDemo.showQueue();
break;
case 'e':
scanner.close();
return;
case 'a':
try {
System.out.println("请输入一个数");
int value = scanner.nextInt();
arrayQueueDemo.addQueue(value);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'g':
try {
int res = arrayQueueDemo.getQueue();
System.out.println("获取到的数据"+res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'p':
try {
int res = arrayQueueDemo.peekQueue();
System.out.println("获取的头部数据"+ res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
}
}
}
}