蓝桥杯一周夺奖冲刺计划-队列篇

目录

一.自我介绍

二.什么是队列

三.队列在内存中的存储方式

.顺序存储方式和链式存储方式​

队列链式存储为什么和链表的头尾指针相反呢?

队列的逻辑结构

四.队列在题目中的实战 

1.银行排队问题

2.思路  

1.首先我们需要创建两个队列,以及两个队列的首尾指针

2.我们要写一个入队函数

3.我们要写一个出队函数 

4.写出获取队头元素的代码,队列我们只关心谁排在第一个 

5.最后写出主函数代码  

3.题目解析 

1.首先我们要先建存放队列数据结构,我们这里采用顺序表,因为主要存放的数据是名字,也就是常说的字符串,我们可以按照如下方式,进行构建:

2.第二步,我们要写入队函数

3.第三步我们要写出队函数  

4.第四步我们写出获取队列头元素的代码 

5.第五步我们写出主函数代码

6.用C++语言写的完整代码为 

7.运行截图 

五.总结


一.自我介绍

哈喽大家好,此篇文章将讲到队列的使用,这里所讲的数据结构倾向于实战,大家不要拘泥于具体的写法,而重在学习原理,和使用方式,我们所需要的是简洁、实用和快速。我们这节课主要目标学会队列原理与实现,学会灵活地运用,能够不依赖于模板根据题目独立写出队列。

二.什么是队列

如果说链表和顺序表是对数据的存取位置的组织方式,那么队列就是一种对于存取方式限制的组织方式。换一种方式描述的话就是,队列既可以采用链表来表示,也可以采用数组(线性表)来表示,我们限制的是对于存放数据的存取方式。

似乎定义是有些晦涩难懂,我们来用图来介绍一下队列,什么是队列。队列如其名,就是按照队列的方式来存取,什么是队列呢,我们举一张打饭的图作为例子。

三.队列在内存中的存储方式

当然我们也是有两种对于队列的存储方式

.顺序存储方式和链式存储方式

队列链式存储为什么和链表的头尾指针相反呢?

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

队列的逻辑结构

  • 队列:只允许在一端进行插入操作,而另一端进行删除操作的线性表。
  • 空队列:不含任何数据元素的队列。
  • 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。
  • 队列操作特性:先进先出,后出后入.

四.队列在题目中的实战 

1.银行排队问题

银行排队问题,CLZ 银行只有两个接待窗口,VIP 窗口和普通窗口,VIP 用户进入 VIP 用户窗口,剩下的进入普通窗口排队。

第一行 M 次操作(M<1000)

第二行 到 第M+1行 输入操作

格式:   IN name V
        OUT V
        IN name2 N
        OUT N
        即 第一个字符串为操作 是IN进入排队和OUT 出队
            IN 排队 跟着两个字符串为姓名和权限V或N
            OUT 为出队即完成操作,V和N代表那个窗口完成了操作

输出:M次操作后V队列和N队列中姓名,先输出V队列后输出N队列。

样例:

输入:

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

输出:

Adel
CLZ
laozhao


2.思路  

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鹏在路上_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值