/*
查: ? 顯示所有元素 ? ? 顯示頭元素
存:
榷及臁:
注:判斷隊是否滿或者空
?*/
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):插入數(shù)據(jù)");
????????????? System.out.println("g(get):獲取數(shù)據(jù)");
????????????? System.out.println("h(head):查看頭數(shù)據(jù)");
????????????? key=sc.next().charAt(0);
??????????????switch(key)
????????????? {
????????????????? case 's':
?????????????????????? queue.showArrQueue();
?????????????????????? break;
????????????????? case 'a':
???????????????????????System.out.println("輸入一個數(shù)");
?????????????????????? int value=sc.nextInt();
?????????????????????? queue.addArrQueue(value);
?????????????????????? break;
????????????????? case 'g':
???????????????????????try
?????????????????????????? {
??????????????????????????????? int res =queue.getArrQueue();
??????????????????????????????? System.out.println("取出來的數(shù)是:"+res);
?????????????????????????? }
???????????????????????catch(Exception e)
? ? ? ? ? ? ? ? ? ? ? ? ? {
??????????????????????????????? System.out.println(e.getMessage());
?????????????????????????? }
?????????????????????????? break;
????????????????? case 'h':
?????????????????????? try
?????????????????????????? {
??????????????????????????????? int res =queue.headArrQueue();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("對頭的數(shù)據(jù)是:"+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[]; ? ?? //定義數(shù)組模擬隊列存放數(shù)據(jù)
//隊列構造器
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));
}
//顯示隊列的頭數(shù)據(jù)
public int headArrQueue()?
{
if(isEmpty())
{
throw new RuntimeException("隊空");
}
return arr[front+1];
}
}