• 『牛客|每日一题』模板队列


    活动地址:CSDN21天学习挑战赛

    👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟
    🏡个人主页:starry陆离

    🕒首发日期:2022年8月17日星期三

    🍁每日推荐:牛客网-面试神器
    在这里插入图片描述

    1.每日一题

    原题链接:戳我戳我

    image-20220816224505343

    2.测试案例

    6
    push 1
    pop
    front
    push 2
    push 3
    pop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1
    error
    2
    
    • 1
    • 2
    • 3

    3.Queue类实现

    用Java自带的队列实现,代码如下,只需要做输入获取的处理与三种操作的判断即可,剩下的事情就是调用对应的类方法

    Modifier_and_TypeMethod and Description
    booleanadd(E e) 将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。
    Eelement() 检索,但不删除,这个队列的头。
    booleanoffer(E e) 如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。
    Epeek() 检索但不删除此队列的头,如果此队列为空,则返回 null
    Epoll() 检索并删除此队列的头,如果此队列为空,则返回 null
    Eremove() 检索并删除此队列的头。
    import java.util.*;
    public class Main{
        public static void main(String args[]){
            Queue<Integer> q=new LinkedList<Integer>();
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();
            in.nextLine();
            int num;
            String[] strs;
            while(n--!=0){
                strs=in.nextLine().split(" ");
                //入队
                if(strs[0].equals("push")){
                    q.add(Integer.parseInt(strs[1]));
                }else if(strs[0].equals("pop")){
                //队不空,队首出列
                    if(!q.isEmpty()){
                        System.out.println(q.poll());
                    }else{
                        System.out.println("error");
                    }
                }else if(strs[0].equals("front")){
                //队不空,输出队首
                    if(!q.isEmpty()){
                        System.out.println(q.peek());
                    }else{
                        System.out.println("error");
                    }
                }
            }
        }   
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    4.数组实现队列

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scan = new Scanner(System.in);
            int n = Integer.parseInt(scan.nextLine()) ;
            MyQueue q = new MyQueue(n+1);
            while(scan.hasNextLine()) {
                String str = scan.nextLine() ;
                String arr[] = str.split(" ") ;
                if(arr[0].equals("push")) {
                    q.push(Integer.parseInt(arr[1])) ;
                } else if(arr[0].equals("pop")) {
                    q.pop() ;
                } else {
                    q.front() ;
                }
            }
        }
    }
    class MyQueue{
        int []arr;//用数组实现队列
        int maxSize;//队列的大小
        int front;//指示队列首下标
        int rear;//指示队尾下标
        public MyQueue(int maxSize){
            this.maxSize=maxSize;
            arr=new int[maxSize];
            front=-1;
            rear=-1;
        }
        //添加数据
        public void push(int val){
            //如果队列满了
            if(rear==maxSize){
                System.out.println("error");
            }else{
                //添加在队列尾部
                rear++;
                arr[rear]=val;
            }
        }
        //查看头部数据
        public void front(){
            if(isEmpty()){
                System.out.println("error");
            }else{
                System.out.println(arr[front+1]);
            }
        }
        
        //取出头部数据
        public void pop(){
            if(isEmpty()){
                System.out.println("error");
            }else{
                front++;
                System.out.println(arr[front]);
            }
        }
        
        //判断队列空
        public boolean isEmpty(){
            if(rear==front){
                return true;
            }
            return false;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    image-20220816224629323

    🍁每日推荐:牛客网-面试神器
    在这里插入图片描述

  • 相关阅读:
    【Java】Spring boot快速上手(一):葵花宝典
    MySQL 中的索引
    python 使用Softmax回归处理IrIs数据集
    WMS仓储管理系统的主要类型及其特性和适用场景
    【调试】pstore原理和使用方法总结
    2022年最新《谷粒学院开发教程》:11 - 统计分析
    安装MongoDB
    爆肝三万字,带你重温Java基础。。。
    盲盒商城系统玩法大讲坛
    Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、
  • 原文地址:https://blog.csdn.net/weixin_53463734/article/details/126376178