数组简单实现队列的先进出
package 队列;
import java.util.Scanner;
public class An_array_of_column {
public static void main(String[] args) {
AyyayCoumn ayyayCoumn=new AyyayCoumn(5);
//创建一个菜单进行提示输入
Scanner scanner = new Scanner(System.in);
Boolean lokp;
lokp = true;
while (lokp) {
System.out.println("输入a,显示对列");
System.out.println("输入b,显示对列头");
System.out.println("输入c,添加数据进对列");
System.out.println("输入d,数据出对列");
char c;
System.out.println("请输入一个字符");
c = scanner.next().charAt(0);//接收第一个字符
switch (c) {
case 'a':
ayyayCoumn.ShowArr();
break;
case 'b':
System.out.println(ayyayCoumn.GetHead());
break;
case 'c':
System.out.println("输入一个数据添加进队列");
int date1 = scanner.nextInt();
ayyayCoumn.AdDate(date1);
break;
case 'd':
System.out.println(ayyayCoumn.GetDate());
break;
default:
System.out.println("输入有误,请输入a,b,c,d中的字符");
}
}
}
//用数组实现对列先的写一个类
public static class AyyayCoumn {
private int MaxSize;//队列的最大的容量
private int front;//队列头
private int rear;//队列尾
private int[] arr;//构建一个数组用来模拟对列
public int getFront() {
return front;
}
public void setFront(int front) {
this.front = front;
}
public int getRear() {
return rear;
}
public void setRear(int rear) {
this.rear = rear;
}
public AyyayCoumn(int Arrmaxsize) {
MaxSize = Arrmaxsize;
arr = new int[MaxSize];
front = -1;//对列头是指向对列头的的前一个位置
rear = -1;//队列尾是指向队列的尾部位置最后一个数据
}
//判断队列是否为满
public Boolean IsFull() {
return rear == MaxSize - 1;
}
//判断队列是否为空
public Boolean IsEmputy() {
return front == rear;
}
//加入数据到队列中
public void AdDate(int date) {
if (IsFull()) {
System.out.println("队列已经满了");
return;
} else rear++;
arr[rear] = date;
}
//获取队列的数据,出队列,队列是先进先出;
//判断对列是不是空
public int GetDate() {
if (IsEmputy()) {
//通过抛出异常
throw new RuntimeException("队列为空,数据无法取出");
} else front++;
return arr[front];
}
//显示所有数据
public void ShowArr() {
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "]=" + arr[i]);
}
}
//取出队列的头数据
public int GetHead() {
if (IsEmputy()) {
throw new RuntimeException("队列为空,没有数据");
}
front++;
return arr[front];
}
}
}
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
a
arr[0]=0
arr[1]=0
arr[2]=0
arr[3]=0
arr[4]=0
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
32
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
25
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
58
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
v
输入有误,请输入a,b,c,d中的字符
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
78
队列已经满了
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
c
输入一个数据添加进队列
98
队列已经满了
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
32
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
25
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
58
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
65
输入a,显示对列
输入b,显示对列头
输入c,添加数据进对列
输入d,数据出对列
请输入一个字符
d
Exception in thread “main” java.lang.RuntimeException: 队列为空,数据无法取出
at 队列.An_array_of_column$AyyayCoumn.GetDate(An_array_of_column.java:96)
at 队列.An_array_of_column.main(An_array_of_column.java:33)
进程已结束,退出代码1