package queue;
import java.util.Scanner;
public class ArrayQueue {
public static void main(String[] args) {
int MAXSIZE=5;
ArrayQueueClass queue=new ArrayQueueClass(MAXSIZE);
char key=' ';
Scanner scanner=new Scanner(System.in);
boolean loop=true;
while(loop) {
System.out.println("s(show): 显示队列");
System.out.println("e(exit): 退出程序");
System.out.println("a(add): 添加数据到队列");
System.out.println("o(out): 从队列取出数据");
System.out.println("g(get): 查看队列头的数据");
key = scanner.next().charAt(0);
switch (key) {
case 's':
queue.showQueue();
break;
case 'a':
System.out.println("输出一个数");
int value = scanner.nextInt();
queue.addQueue(value);
break;
case 'o':
try {
int res = queue.outQueue();
System.out.printf("取出的数据是%d\n", res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'g':
try {
int res = queue.getHeadQueue();
System.out.printf("队列头的数据是%d\n", res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'e':
scanner.close();
loop = false;
break;
default:
break;
}
}
System.out.println("程序退出~~");
}
}
class ArrayQueueClass{
private int[] arr;
private int MAXSIZE;
private int front;
private int rear;
ArrayQueueClass(int MAXSIZE){
this.MAXSIZE=MAXSIZE;
arr=new int[MAXSIZE];
front=-1;
rear=-1;
}
public boolean isFull() {
return rear==MAXSIZE-1;
}
public boolean isEmpty() {
return rear==front;
}
public boolean addQueue(int x) {
if(isFull()) {
throw new RuntimeException("full");
}
arr[++rear]=x;
return true;
}
public int outQueue() {
if(isEmpty()) {
throw new RuntimeException("empty");
}
int rs=arr[front+1];
for(int i=front+2;i<=rear;i++) {
arr[i-1]=arr[i];
}
rear--;
return rs;
}
public void showQueue() {
if(isEmpty()) {
System.out.println("empty");
}else {
for(int i=front+1;i<=rear;i++) {
System.out.printf("%d\t",arr[i]);
}
}
}
public int getHeadQueue() {
if(isEmpty()) {
throw new RuntimeException("empty");
}else {
int p=front+1;
return arr[p];
}
}
}