(三十三)队列(queue)

文章目录

  • 1. 队列(queue)
    • 1.1 定义
    • 1.2 函数
    • 1.3 习题
      • 1.3.1 例题(周末舞会)
  • 2. 双向队列(deque)
    • 2.1 定义
    • 2.2 函数
    • 2.3 题目
      • 2.3.1 例题(打BOSS)

1. 队列(queue)

队列也是一种特殊的数据类型,它遵守了先进先出(FIFO, First In First Out)原则

1.1 定义

形象点儿说,队列相当于学校的排队的食堂,先来排队的先得到饭,然后先走;后来排队的最后得到饭,最后走。

STL 专门提供了关于栈和队列的容器,还拓展了一个双向队列(deque)

导入栈(stack):#include <stack>
导入队列(queue):#include <queue>
导入双向队列(deque):#include <deque>
三个库均可使用 #include <bits/stdc++.h> 导入

1.2 函数

想要构造一个队列,可以使用queue<类型> 队列名称 这种方式构造,一般定义的名称:QTqQueue

  1. 名称.push(x):让x入队,也就是x排到队列后方
  2. 名称.pop():让队头出队,后面的代替队头
  3. 名称.front():返回队头数据
  4. 名称.size():返回队列长度
  5. 名称.empty():队列是否为空,空返回1,否则返回0
  6. 名称.clear():清空

遍历队列一般都是程序末尾的事

#include <iostream>
#include <queue>
using namespace std; int main () {queue<int> T; ...while(T.size()) {cout << T.front() << ' '; T.pop(); }return 0; 
}

1.3 习题

它和栈还有一种特殊的出法:DFS 与 BFS
这个后面会有关于它的文章

1.3.1 例题(周末舞会)

题目链接
题目描述
假设在周末舞会上, x x x 个男士和 y y y 个女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。舞曲总共播放 n n n 次。现要求写一个程序,模拟上述舞伴配对问题。

输入
第一行输入两个数 x x x y y y,表示两队的人数;
第二行输入一个数 n n n,表示舞曲的数目。

输出
输出 n n n 排,每排两个数,表示男士编号和女士编号

样例输入

4 6
7

样例输出

1 1
2 2
3 3
4 4
1 5
2 6
3 1

题解
仔细观察输出,你会发现规律:左边以 1 , 2 , . . . , x , 1 , 2 , . . . , x , . . . 1, 2, ..., x, 1, 2, ..., x, ... 1,2,...,x,1,2,...,x,... 的顺序输出,右边以 1 , 2 , y , . . . , 1 , 2 , . . . , y , . . . 1, 2, y, ..., 1, 2, ..., y, ... 1,2,y,...,1,2,...,y,... 的顺序输出

#include <iostream>
#include <queue>
using namespace std; 
int main() {int x, y, n; cin >> x >> y >> n; queue<int> M, F; //M:男士    F:女士for(int i=1; i<=x; i++) //初始化男士编号M.push(i); for(int i=1; i<=y; i++) //初始化女士编号F.push(i); for(int i=1; i<=n; i++) {M.push(M.front()); //跳完后男士排在队伍后面F.push(F.front()); //跳完后女士排在队伍后面cout << M.front() << ' ' << F.front() << endl; //输出M.pop(); F.pop(); }return 0; //结束程序
}

2. 双向队列(deque)

2.1 定义

这是 STL 独有的专属容器,它也有队头和队尾,但插入和删除可以同时进行。形象一点就是医院的“军人优先”。还是一个队列,普通人往后排,军人们有可以排在前面的特权。因此,队头可以插入删除,队尾也可以。

2.2 函数

使用deque<类型> 名称构造一个双向队列,一般名称TDeque

  1. 名称.push_front(x):向队头插入元素x
  2. 名称.push_back(x):向队尾插入元素x
  3. 名称.pop_front():队头出队
  4. 名称.pop_back():队尾出队
  5. 名称.front():返回队头元素
  6. 名称.back():返回队尾元素
  7. 名称.size():返回队列大小
  8. 名称.empty():队列是否为空,是返回1,否则返回0
  9. 名称.clear():清空

2.3 题目

双向队列只是stackqueue的整合,所以关于它的题目很少

2.3.1 例题(打BOSS)

这个复制不了,请点开 题目链接 查看

题解

#include <bits/stdc++.h>
using namespace std; int main () {int m, s, hp; cin >> m >> s >> hp; deque<int> T; for(int i=1; i<=m; i++) {string o; cin >> o; if(o=="add") {int n; cin >> n; if(T.size()<s) {T.push_back(n); }} else {if(!T.empty()) {if(T.front()>=T.back()) {hp -= T.front(); T.pop_front(); } else {hp -= T.back(); T.pop_back(); }if(hp<=0) {cout << i; return 0; }}}}cout << "-1"; return 0; 
}

预览

  • 二十六:vector容器
  • 二十七:递推
  • 二十八:set容器
  • 二十九:map容器
  • 三十:二分查找
  • 三十一:前缀和与差分
  • 三十二:栈(stack)
  • 三十三:队列(queue)
  • 三十四:神奇的计算机
  • 三十五:链表
  • 三十六:树与遍历
  • 三十七:图与DFS、BFS
  • 三十八:array容器
  • 三十九:priority_queue容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16758.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

web——upload-labs——第二关

MIME验证 MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;验证是指在互联网传输中&#xff0c;通过检查数据的MIME类型来确保数据格式的正确性和安全性。MIME最初是为了扩展电子邮件的功能&#xff0c;让邮件支持多种格式&#xff0c;如文本、图片、音频等…

Vue3 -- 集成sass【项目集成5】

集成sass&#xff1a; 看过博主的 配置styleLint工具应该已经安装过 sass sass-loader 了&#xff0c;所以我们只需要加上我们的 lang"scss"即可。 <style scoped lang"scss"></style>给项目添加全局样式文件&#xff1a; 在src文件夹下创建…

【Web前端】Promise的使用

Promise是异步编程的核心概念之一。代表一个可能尚未完成的操作&#xff0c;并提供了一种机制来处理该操作最终的成功或失败。具体来说&#xff0c;Promise是由异步函数返回的对象&#xff0c;能够指示该操作当前所处的状态。 当Promise被创建时&#xff0c;它会处于“待定”&a…

EI检索!2024年大数据与数据挖掘会议(BDDM 2024)全解析!

第二届大数据与数据挖掘国际会议&#xff08;BDDM 2024&#xff09;将于2024年12月13-15日在武汉举行&#xff0c;已启动第二轮征稿&#xff0c;截稿2024年11月30日。邀请学者探讨大数据与数据挖掘进展&#xff0c;可在线投稿及AC学术中心查看详情。 大会官网&#xff1a;www.i…

基于java+ssm+Vue的校园美食交流系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

关于 MSVCP110.dll 缺失的解决方案

背景&#xff1a;之前使用 PR&#xff08;Adobe Premiere&#xff09; 从来没有遇到过这样的问题。今天重装系统后&#xff08;window 10&#xff09;&#xff0c;想要重新安装以前的软件时&#xff0c;遇到了以下 DLL 文件缺失的错误。 解决方案&#xff1a; 可以到微软官网的…

Python小游戏27——飞翔的小鸟

首先&#xff0c;你需要确保已经安装了Pygame库。如果还没有安装&#xff0c;可以通过以下命令进行安装&#xff1a; 【bash】 pip install pygame 游戏的代码&#xff1a; 【python】 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕大小和标题 screen_…

【Three.js基础学习】24. shader patterns

前言 课程回顾: ShaderMaterial 这里用的是着色器材质 所以顶点和片段着色器就不需要像原始着色器那样添加需要的属性 然后写 片段着色器需要属性 &#xff1a; 顶点 属性 -》变化 -》 片段中 顶点中的属性不需要声明 只需要声明传送的变量 例如 varying vec vUv; vUv uv; 补充…

构建客服知识库:企业效率提升的关键步骤

客服知识库是企业提升客户服务效率和质量的重要工具。它不仅帮助客服团队快速准确地回答客户问题&#xff0c;还能通过数据分析来优化服务流程和提升客户满意度。 1. 明确知识库的目标和范围 构建客服知识库的第一步是明确其目标和范围。这包括确定知识库的主要用户群体、需要…

运动汇 专业的比赛管理平台数据获取

在获取到运动汇的网站链接后&#xff0c;界面如图所示: 右键检查&#xff0c;我们会发现没有任何数据&#xff0c;只有当我们点开这些"第一单元"、"第二单元"等&#xff0c;数据才会加载出来&#xff1b; 由于我们只需要分析这一个网页并获取其中的数据&a…

免费送源码:Java+Springboot+MySQL Springboot多租户博客网站的设计 计算机毕业设计原创定制

Springboot多租户博客网站的设计 摘 要 博客网站是当今网络的热点&#xff0c;博客技术的出现使得每个人可以零成本、零维护地创建自己的网络媒体&#xff0c;Blog站点所形成的网状结构促成了不同于以往社区的Blog文化&#xff0c;Blog技术缔造了“博客”文化。本文课题研究的“…

Docker环境搭建Cloudreve网盘服务(附shell脚本一键搭建)

Docker搭建Cloudreve Cloudreve介绍&#xff1a; Cloudreve 是一个基于 ThinkPHP 框架构建的开源网盘系统&#xff0c;旨在帮助用户以较低的成本快速搭建起既能满足个人也能满足企业需求的网盘服务。Cloudreve 支持多种存储介质&#xff0c;包括但不限于本地存储、阿里云OSS、…

Macs Fan Control - 控制 Apple 计算机上的风扇

免费下载 提供 macOS 和 Windows &#xff08;Boot Camp&#xff09; 版本 https://apsgo.cn/joN0WG Mac 风扇控制 监视和控制 Apple 计算机上的风扇 实时监控风扇速度和温度传感器&#xff0c;包括第三方 HDD/SSD&#xff08;使用 S.M.A.R.T.&#xff09;。设置自定义 RP…

3.STM32之通信接口《精讲》之USART通信

本节将进行实战&#xff0c;基础了解请查看第二节&#xff08;Whappy&#xff09;开始背&#xff01;&#xff01; USART ---》全双工 异步/同步 点对点 USART&#xff1a;STM32自带硬件电路&#xff0c;通过配置相对应的寄存器来设置数据帧的发送&#xff0c;我们收发只需要…

无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

SPIRiT-Diffusion:基于自一致性驱动的加速MRI扩散模型|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 SPIRiT-Diffusion: Self-Consistency Driven Diffusion Model for Accelerated MRI SPIRiT-Diffusion&#xff1a;基于自一致性驱动的加速MRI扩散模型 01 文献速递介绍 磁共振成像&#xff08;MRI&#xff09; 在临床和研究领域被广泛应用。然而&#xff0c;其…

Vue3中一级导航栏的吸顶导航交互以及Pinia优化重复请求

一、前言 在日常的网站中&#xff0c;当鼠标滚轮往页面的底部滑动时&#xff0c;会出现顶部导航栏的隐藏&#xff0c;而出现新的导航栏显示&#xff0c;这就是一级导航栏的吸顶导航交互。本文当实现改模块功能的实现。 二、示例图 参考黑马程序员小兔仙儿PC端项目&#xff1a;…

JDK17源码系列-ArrayList源码解读

JDK17源码系列-ArrayList接口源码解读 1.List集合接口类图 2.ArrayList详细类图 ArrayList继承了AbstractList实现了List、Serializable等接口&#xff0c;实现Serializable接口使得ArrayList类的对象可以串行化&#xff0c;串行化后&#xff0c;对象可以进行网络传输&#x…

VBA学习笔记:点击单元格显示指定的列

应用场景&#xff1a; 表格中列数较多&#xff0c;特定条件下隐藏一些无关的列&#xff0c;只保留相关的列&#xff0c;使表格更加清晰。 示例&#xff1a;原表格如下 点击一年级&#xff0c;只显示一年级相关的科目&#xff1a; 点击二年级&#xff0c;只显示二年级相关的科…

RNN深度学习案例:LSTM火灾温度预测

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 前期准备数据 1.导入数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import MinMaxScaler from keras.lay…