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

发布于:2023-01-14 ⋅ 阅读:(522) ⋅ 点赞:(0)

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

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

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

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

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

1.每日一题

原题链接:戳我戳我

image-20220816224505343

2.测试案例

6
push 1
pop
front
push 2
push 3
pop
1
error
2

3.Queue类实现

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

Modifier_and_Type Method and Description
boolean add(E e) 将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。
E element() 检索,但不删除,这个队列的头。
boolean offer(E e) 如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。
E peek() 检索但不删除此队列的头,如果此队列为空,则返回 null
E poll() 检索并删除此队列的头,如果此队列为空,则返回 null
E remove() 检索并删除此队列的头。
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");
                }
            }
        }
    }   
}

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;
    }
}

image-20220816224629323

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

本文含有隐藏内容,请 开通VIP 后查看