ArrayQueue(数组模拟队列)
队列介绍:
队列是一个有序列表,可用数组或链表进行实现.
遵循先入先出原则。即,先存入队列的数据先取出,后存入的数据要后取出。
示意图(使用数组模拟队列):
数组模拟队列的思路:
- 队列本身是一个有序列表,如使用数组结构来存储队列的数据,则需要声明如下
//用数组模拟实现队列 -- 创建一个ArrayQueue类 class ArrayQueue { private int maxSize; //表示数组的最大容量 private int front; //队列头 private int rear; //队列尾 private int[] arr; //该数组用于存放数据,模拟队列
- 因为队列的输入、输出分别是从前、后端来处理,因此需要两个变量
front
及rear
分别记录队列的前后端的下标。front会随着数据输出而变化,rear则是随着数据的输入而变化。//添加数据到队列 public void addQueue(int n) { //判断队列是否为满 if (isFull()) { throw new RuntimeException("队列已满,无法加入新的数据"); } arr[++rear] = n; //rear后移一步,同时将新的数据添加进去 }
//获取队列中的数据 public int getQueue() { //判断队列是否为空 if (isEmpty()) { throw new RuntimeException("队列为空,无法读取有效数据"); } return arr[++front]; //front后移一步,同时获取对应位置的数据 }
代码实现:
package Queue;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* User: Joeo8
* Time: 15:50
* Description: No Description
*/
public class ArrayQueueDemo {
public static void main(String[] args) {
//测试数组模拟队列
ArrayQueue arrayQueue = new ArrayQueue(3);
char key = ' '; //用于接收用户输入的命令
Scanner scanner = new Scanner(System.in);
boolean loop = true;
//输入一个菜单
while (loop) {
System.out.println