栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥杯基础数据结构-队列(CLZ银行普通队列)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯基础数据结构-队列(CLZ银行普通队列)

题目描述:
CLZ 银行只有两个接待窗口,VIPVIP 窗口和普通窗口,VIPVIP 用户进入 VIPVIP 窗口排队,剩下的进入普通窗口排队。现有 MM 次操作,操作有四种类型,如下:

IN name V:表示一名叫 name 的用户到 VIPVIP 窗口排队
OUT V:表示 VIPVIP 窗口队头的用户离开排队
IN name N:表示一名叫 name 的用户到普通窗口排队
OUT N:表示普通窗口队头的用户离开排队
求 MM 次操作结束后 VIPVIP 窗口队列和普通窗口队列中的姓名。

输入描述
第一行是一个整数 M(1leq M leq 1000)M(1≤M≤1000),表示一共有 MM 次操作。

第二行到第 M+1M+1 行输入操作,格式如下:

IN name V
OUT V
IN name N
OUT N

输出描述
输出 MM 次操作后 VIPVIP 窗口队列和普通窗口队列中的姓名(从头到尾),先输出 VIPVIP 窗口队列后输出普通窗口队列。

输入输出样例
示例 1

输入

5
IN xiaoming N
IN Adel V
IN laozhao N
OUT N
IN CLZ V
copy

输出

Adel
CLZ
laozhao

题目分析:1.由于有两种模式(vip和putong),所以需要建立连个队列,一个是vip,一个putong,由于首先输入一个数字开始换行操作,并且每行输入之后都会进行换行操作,所以我们需要进行换行操作(sc.nextLine())(进行吸收换行操作);
2.输入操作次数m之后会有m行的字符串输入,并且我们需要知道这行字符串中每段字符是什么,所以我们需要把字符串分割,并且把字符串分隔成数组之后提取出每段的字符进行比较;这里可以用到str[0].contains("V");
代码如下:

import java.util.linkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Queue vip = new linkedList<>();
        Queue putong = new linkedList<>();
        int m = sc.nextInt();
        sc.nextLine();
        while(m-->0){
            String s = sc.nextLine();
            String[] str = s.split(" ");
            if(str[0].contains("IN")){
                if(str[2].contains("N")){
                    putong.offer(str[1]);
                }else{
                    vip.offer(str[1]);
                }
            }else{
                if(str[1].contains("N")){
                    putong.poll();
                }else{
                    vip.poll();
                }
            }
        }
        for(String s : vip){
            System.out.println(s);
        }
        for(String s : putong){
            System.out.println(s);
        }
    }
}

对于队列:
思考一下:

为什么链式存储的方式的队列首尾指针与链表头尾刚好相反,是什么原因呢?

其实我们知道链表的表头是用来插入数据的,表尾处的数据才是最先插入的,先入先出原则,所以表尾出的数据最先出列,也就是队列的头啦!听到这里,可能有人迷糊了,什么头什么尾的?链表是数据存储的组织方式,他只是决定了数据在内存中怎么存储,而队列是说我们是按照什么顺序存储。可以理解为一群人排队,队列告诉他们先来的先吃饭,后来的得排队,而链表或顺序表是说,你可以站着排队蹲着排队等等。
对于java 里面for (String str : s){}怎么理解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号