基本介绍Queue是一个有序列表,可以用数组或者链表来实现。它遵循先进先出的原则,即先存入队列的数据必须先取出。存放在队列中的数据,后面一定要取出来。模拟队列queue本身是有序的List,如果使用数组的结构来存放队列的数据,则queue数组的声明如下图所示,其中maxSize为队列的最大容量。因为队列的输入和输出分别从前后端处理,所以需要两个变量front,rear分别记录队列前后端的下标,front会随着数据的输出而变化,而rearrear会随着数据的输入而变化。代码示例packagecom.structures.queue;importjava.util.Scanner;publicclassArrayQueueDemo{publicstaticvoidmain(String[]args){ArrayQueuearrayQueue=newArrayQueue(3);charkey='';//接受用户输入Scannerscanner=newScanner(System.in);booleanloop=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=scanner.next().charAt(0);switch(key){case's':arrayQueue.showQueue();break;case'a':System.out.println("请输入一个整数");intvalue=scanner.nextInt();arrayQueue.addQueue(value);break;case'g':try{intqueue=arrayQueue.getQueue();System.out.printf("获取的数据为%d",queue);}catch(Exceptione){System.out.println(e.getMessage());}break;case'e':scanner.close();loop=false;break;case'h':try{inthead=arrayQueue.headQueue();System.out.printf("队列头部的数据为%d",head);}catch(Exceptione){System.out.println(e.getMessage());}default:break;}}System.out.println("Programexits");}}//用数组模拟队列——写一个ArrayQueue类classArrayQueue{//表示数组的最大容量privateintmaxSize;//队列headprivateintfront;//queuetailprivateintrear;//用来存储数据,模拟一个队列privateint[]arr;//创建一个队列构造函数publicArrayQueue(intarrMaxSize){maxSize=arrMaxSize;arr=newint[maxSize];front=-1;//指向前面的位置thequeueheadrear=-1;//指向队尾的数据,即队列的最后一个数据}//判断队列是否满publicbooleanisFull(){returnrear==maxSize-1;}//判断队列是否为空publicbooleanisEmpty(){returnrear==front;}//向队列添加数据publicvoidaddQueue(intn){if(isFull()){System.out.println("队列不能添加data");return;}rear++;//让rear移动arr[rear]=n;}//获取队列数据,出队publicintgetQueue(){if(isEmpty()){thrownewRuntimeException("队列为空,无法取数据");}front++;returnarr[front];}//显示队列所有数据publicvoidshowQueue(){if(isEmpty()){System.out.println("队列为空,无数据");}for(inti=0;i
