队列是一个有序列表,可以用数组或链表来实现,遵循先入先出的原则!!!
增加数据是从队列的尾部添加,拿走数据从队列的顶端拿走!!先进来的先出去,需要用两个变量front和rear来记录队列的前后端 front跟着数据输出(取数据)而改变,rear随着数据输入(存数据)而改变
队列可以分为单向队列与环形队列
1.单向队列
使用场景,银行排号系统
判断条件:
1.当rear==maxSize-1时,无法再添加数据。。
2.front(指向队队列头 的前一个位置)初始化=-1
3.rear(指向队列尾部的数据)初始化=-1
想添加数据直接 array[++rear]=num;
想移除数据直接 return array[++front];
这个单向队列有一个问题:添加数据只能够添加一次。想要解决需要用到环形队列!!!
public class ArrayQueueDemo {
public static void main(String[] args) {
char key;
ArrayQueue aq = new ArrayQueue(4);
Scanner sc = new Scanner(System.in);
boolean loop=true;
while (loop){
//弹出一个菜单
System.out.println("s:显示队列");
System.out.println("g:移除数据");
System.out.println("a:添加数据");
System.out.println("e:退出数据");
key=sc.next().charAt(0);
switch (key){
case 's':
aq.show();
break;
case 'g':
int i = aq.get();