队列

队列遵循先入先出原则,可用数组或链表实现。单向队列常用于银行排号系统,但只能添加一次数据。环形队列解决了这一问题,通过数组循环使用,形成一个虚拟的环状结构,允许反复添加数据,关键在于理解和处理队列满和空的状态。
摘要由CSDN通过智能技术生成

队列是一个有序列表,可以用数组或链表来实现,遵循先入先出的原则!!!
增加数据是从队列的尾部添加,拿走数据从队列的顶端拿走!!先进来的先出去,需要用两个变量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();
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值