import java.util.Scanner;
/**
* @author lijia
* @version 1.0
*/
public class ArrayQueueTest {
public static void main(String[] args) {
//创建一个队列
ArrayQueue queue = new ArrayQueue(6);
char value = ' '; //接受用户输入
Scanner in = new Scanner(System.in);
boolean loop = true;
while (loop) {
System.out.println("***************************");
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): 显示队列的头数据");
System.out.println("***************************");
System.out.println("请输入您的选择:");
value = in.next().charAt(0);//接受一个字符
switch (value) {
case 's':
queue.showQueue();
break;
case 'e':
loop = false;
System.out.println("*程序退出!*");
break;
case 'a':
System.out.println("请输入一个数:");
int val = in.nextInt(); //获取一个添加值
queue.addQueue(val);
System.out.println("添加成功!");
break;
case 'g':
try {
int number = queue.getQueue();
System.out.println("输出的数据是:" + number);
} catch (Exception Empty) {
System.out.println("队列为空,不能取出数据!");
}
break;
case 'h':
int number = queue.headQueue();
System.out.println("查看的头数据为:" + number);
break;
default:
break;
}
}
}
}
class ArrayQueue {
private int maxSize; //数组容量
private int front; //队列头
private int rear; //队列尾
private int[] array; //创建一个数组
//构造器
public ArrayQueue(int maxSize) {
this.maxSize = maxSize;
maxSize = maxSize;
array = new int[maxSize];
front = -1; //作用:指向队列头数据 是头数据的前一个数据
rear = -1; //作用;指向队列尾数据 记录队列中尾数据的位置
}
//判断队列是否满
public boolean isFull() {
return rear == maxSize - 1;
}
//判断队列是否空
public boolean isEmpty() {
return rear == front;
}
//添加数据到队列
public void addQueue(int value) {
if (isFull()) {
System.out.println("队列已满");
}
rear++;
array[rear] = value;
}
//从队列获取头数据
public int getQueue() {
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
front++;
return array[front];
}
//遍历队列里的数据
public void showQueue() {
//判断队列是否为空
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
for (int i = 0; i < array.length; i++) {
System.out.printf("arr[%d]=%d", i, array[i]);
System.out.println();
}
}
//查看头数据
public int headQueue() {
//判断队列是否为空
if (isEmpty()) {
throw new RuntimeException("队列为空");
}
return array[front + 1];
}
}
Java数据结构 | 队列的代码实现
最新推荐文章于 2022-09-11 12:04:45 发布