package cn.gyk.quene;
import java.util.Scanner;
public class ArrayToQuene {
public static void main(String[] args) {
ArrayQuene quene = new ArrayQuene(4);
Scanner sc = new Scanner(System.in);
char key = ' ' ;
boolean loop = true ;
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':
quene.showAll();
break;
case 'a':
System.out.println("请输入一个数:");
int n = sc.nextInt() ;
quene.addQuene(n);
break;
case 'g':
try {
int res = quene.getQuene();
System.out.printf("取出的数据是:%d\n",res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'h':
try {
int res = quene.showQuene();
System.out.printf("头部的数据是:%d\n",res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
case 'e':
sc.close();
loop = false ;
break;
default:
break;
}
}
System.out.println("程序结束~~");
}
}
/*
* 缺点,这个队列之只能使用一次
*
*
* */
class ArrayQuene{
private int maxSize ;//最大长度
private int front ;//队列头
private int rear ;//队列尾
private int[] arr ;//存放数据,模拟队列
//构造
public ArrayQuene(int maxSize) {
this.maxSize = maxSize ;
this.front = -1 ;
this.rear = -1 ;
this.arr = new int[maxSize] ;
}
//是否为空
public boolean isEmpty() {
return front == rear ;
}
//是否满
public boolean isFull() {
return rear == maxSize - 1 ;
}
//添加数据
public void addQuene(int n) {
if(isFull()) {
System.out.println("队列满了,无法添加");
return ;
}
rear ++ ;
arr[rear] = n ;
}
//获取数据,出队列
public int getQuene() {
if(isEmpty()) {
throw new RuntimeException("队列是空的");
}
front ++ ;
return arr[front] ;
}
//显示所有数据
public void showAll() {
if(isEmpty()) {
System.out.println("队列是空的");
}
for(int i = 0 ; i < arr.length ; i ++) {
System.out.printf("arr[%d]=%d\n" , i , arr[i]);
}
}
//显示队列的头部,并不取出数据
public int showQuene() {
if(isEmpty()) {
throw new RuntimeException("队列是空的");
}
return arr[front+1] ;
}
}
08-01
08-01
08-01
10-31