package come;
import java.util.Scanner;
import java.util.concurrent.TimeoutException;
public class 数组队列 {
public static void main(String[] args) {
ArrayQueue a1 = new ArrayQueue(3);
char key = ' ';//客户的输入
Scanner scanner = new Scanner(System.in);
boolean loop = true;
while(loop) {
System.out.println("1(show):显示队列:");
System.out.println("2(show):退出:");
System.out.println("3(show):添加数据:");
System.out.println("4(show):从队列中取出数据:");
//System.out.println("5 查看头数据");
key = scanner.next().charAt(0);
switch(key) {
case '1':
a1.showArr();
break;
case '3':
System.out.println("输入添加的数据:");
int invale = scanner.nextInt();
a1.addArr(invale);
break;
case '4':
try {
int res = a1.getArr();
System.out.println("取出数是" + res);
}catch(Exception e){
System.out.println(e.getMessage());
}
break;
// case '5':
// try {
// int res = a1.;
// System.out.println("取出数是" + res);
// }catch(Exception e){
// System.out.println(e.getMessage());
// }
// break;
// }
case '2':
scanner.close();
loop = false;
break;
default:
break;
}
}
System.out.println("程序结束!");
}
}
//用数组模拟一个队列
class ArrayQueue{
private int maxSize;//数组的容量
private int front;//数组的头部
private int rear;//数组的尾部
private int[] arr;//数组
public ArrayQueue(int arrMaxsize) {//构造器
maxSize = arrMaxsize;
arr = new int[maxSize];
front = -1;
rear = -1;
}
//判断队列是否已满
public boolean isFull() {
// if(rear == maxSize) {
// System.out.println("数组已满!");
// return true;
// }
// return false;
return rear == maxSize - 1;
}
//判断数组是否为空
public boolean isEmpty() {
// if(front == rear) {
// System.out.println("数组为空");
// return true;
// }
// else {
// return false;
// }
return rear == front;
}
//添加数组数据
public void addArr(int n) {
if(isFull()) {
System.out.println("数组已满!");
return;
}
arr[++rear] = n;
}
// //取出数组中的数据,就是头指针向后移动一位
// public void delArr(int n) {
//
//
// if(isEmpty()) {
// return;
// }
//
// if(n > (rear - front)) {
// System.out.println("没有这么多的数据!");
// return;
// }
// System.out.println("取出的数据:");
// for(int i = 0;i < n-1 ; i++) {
// System.out.print(i + " " + arr[front++]);
// }
// front += n;
// }
//取出数组中的数据,就是头指针向后移动一位
public int getArr() {
if(isEmpty()) {
//return;
throw new RuntimeException("队列空,不能取数据!");
}
front++;
return arr[front];
}
//显示数组数据:
public void showArr() {
if(isEmpty()) {
System.out.println("数组为空");
return;
}
for(int i = 0;i < arr.length; i++) {
System.out.println(i + " " + arr[i]);
}
}
}
数组模拟队列
最新推荐文章于 2024-05-06 19:00:21 发布