/*
查: 显示所有元素 显示头元素
存:
取:
注:判断队是否满或者空
*/
import java.util.Arrays;
import java.util.Scanner;
public class Solution
{
public static void main(String[] args)
{
ArrQueue queue=new ArrQueue(3);
Scanner sc=new Scanner(System.in);
boolean loop=true;
char key=' '; //接受用户输入
while(loop)
{
System.out.println("s(show):显示队列");
System.out.println("e(exit):退出程序");
System.out.println("a(add):插入数据");
System.out.println("g(get):获取数据");
System.out.println("h(head):查看头数据");
key=sc.next().charAt(0);
switch(key)
{
case 's':
queue.showArrQueue();
break;
case 'a':
System.out.println("输入一个数");
int value=sc.nextInt();
queue.addArrQueue(value);
break;
case 'g':
try
{
int res =queue.getArrQueue();
System.out.println("取出来的数是:"+res);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
break;
case 'h':
try
{
int res =queue.headArrQueue();
System.out.println("对头的数据是:"+res);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
break;
case 'e':
sc.close();
loop=false;
break;
default:
break;
}
}
System.out.println("退出程序");
}
}
class ArrQueue
{
private int maxSize;
private int rear; //队尾
private int front; //队头
int arr[]; //定义数组模拟队列存放数据
//队列构造器
public ArrQueue(int arrmaxSize)
{
maxSize=arrmaxSize;
arr=new int [arrmaxSize];
rear=-1; //指向队尾,即队列的最后一个位置
front=-1; //指向队列头部,也就是队头的前一个位置
}
//是否为满
public boolean isFull()
{
return rear==maxSize-1;
}
//是否为空
public boolean isEmpty()
{
return rear==front;
}
//添加元素
public void addArrQueue(int value)
{
if(isFull())
{
System.out.println("队满");
return;
}
rear++;
arr[rear] =value;
}
//获得元素
public int getArrQueue()
{
if(isEmpty())
{
throw new RuntimeException("队空");
}
front++;
return arr[front];
}
public void showArrQueue() //显示队列所有元素
{
if(isEmpty())
{
System.out.println("队空");
return;
}
System.out.println(Arrays.toString(arr));
}
//显示队列的头数据
public int headArrQueue()
{
if(isEmpty())
{
throw new RuntimeException("队空");
}
return arr[front+1];
}
}