卡码网C++基础课 |20. 排队取奶茶

news2024/12/23 19:14:39

目录

前言

一、题目描述

二、解题思路

1.队列

2.队列的操作

三、完整代码

总结

前言

仅个人记录所用

源自卡码网的C++基础课

“这门C++基础课 帮助 编程零基础学员快速学习刷算法题所需要的基础语法知识,学完之后,再来刷代码随想录,或者自己去刷编程题,基本不会有语法方面的困惑了,可以帮助大家快速上手刷题。 ”

第二十题包含以下内容:

  • 队列的基本概念(队头、队尾)和特点(先入先出)
  • 入队、出队、获取队头元素和判断队列是否为空等基本操作
  • queue的定义和使用

一、题目描述

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、解题思路

队列这一数据结构,主要包括以下内容

  • 队列的基本概念(队头、队尾)和特点(先入先出)
  • 入队、出队、获取队头元素和判断队列是否为空等基本操作
  • queue的定义和使用

1.队列

队列,顾名思义,和排队的队列结构是类似的,在排队的过程中,想要加入队列,需要在队伍的最后一位(也被称为队尾)入队,想要离开队列,需要从队伍的第一位(也被称为队头)出队。

image-20230914160949705

从图中可以看出,队列在队尾那一侧进行插入操作(入队),在队头那一侧进行删除操作(出队),而且是先进先出FIFO(最先进入队列的元素将首先被移除)。

队列在计算机领域中应用也十分广泛,比如在网络通信中,请求和响应通常以队列的形式进行排队,以确保数据按照正确的顺序进行传输,又比如说不同进程可以通过消息队列来传递数据和消息。

2.队列的操作

在C++中,你可以使用标准库提供的 std::queue 来创建和操作队列,不过这需要引入头文件queue

// 引入queue头文件
#include <queue>

创建一个队列和创建一个栈的写法是相似的,需要指定队列中元素的类型,不过这也意味着队列中的元素必须是相同的数据类型,下面的代码表示创建一个字符串类型的队列。

queue<string> q; // 创建一个字符串类型的队列

队列的常用操作主要有以下几种:

  • empty(): 判断队列是否为空,如果队列为空返回true, 否则返回false
  • push(): 入队操作,将新的元素添加到队列的尾部。
  • pop(): 出队操作,移除队列的头部元素。
  • front(): 访问队列的头部元素,但不会将其移除。
  • size(): 获取队列的长度,即队列中元素的数量。
q.push("Jack");
q.push("Mike");  // 入队了两个名称字符串

q.pop(); // 移除队列头部的元素

string name = q.front(); // 获取队列头部的元素但是不会将其移除

bool isEmpty = q.empty(); //  如果队列为空,返回true;否则返回false

int queueSize = q.size(); // 获取队列中元素的数量

三、完整代码

完整的代码如下:

#include <iostream>
#include <queue>
#include <string>
using namespace std;
int main() {
    int n, m, opt; // n代表队列长度,m代表操作次数,opt代表输入指令
    string name;
    cin >> n;
    queue<string> q; // 新建一个队列
    while (n--) {
        cin >> name;
        q.push(name); // push操作入队
    }
    cin >> m;
    while (m--) {
        cin >> opt;
        // 注意这里如果队列已经为空就不能再弹出了,所以要判断是否为空
        if (opt == 1 && !q.empty()) q.pop(); // pop操作出队
        else {
            cin >> name;
            q.push(name);
        }
    }
  // empty操作判断队列是否为空
    if (q.empty()) cout << "There are no more people in the queue." << endl;
    else cout << q.front() << endl; // front操作取出队头元素
} 

总结

总结来说,栈是只能在尾部进行插入和删除操作的数据结构,队列是在尾部进行插入操作、头部进行删除操作的数据结构。

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

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

相关文章

CentOS 7.9 局域网配置指定同步时间服务器

在 CentOS 7.9 中&#xff0c;默认的时间同步工具是 chrony。以下是如何配置 NTP 服务器地址并使用 chrony 进行时间同步的步骤&#xff1a; 1. 安装 chrony&#xff08;通常已经预装可忽略&#xff09; 通过systemctl status chronyd检查是否已经安装启动 如果没网可以直接…

npm安装依赖报错npm ERR! Unexpected token ‘.

电脑是windows的&#xff0c;因为有多个项目做开发&#xff0c;每个项目需要的node版本不一样&#xff0c;所以使用了nvm做node管理。 电脑的nvm是1.1.7版本的。 新项目在安装依赖时突然报错如下&#xff1a; npm ERR! Unexpected token .在网上查了很多都说是nvm版本太低了&…

【MLP-Mixer】核心方法解读

abstract&#xff1a; 我们提出MLP-Mixer架构(或简称“Mixer”)&#xff0c;这是一个具有竞争力但在概念和技术上都很简单的替代方案&#xff0c;它不使用卷积或自关注。相反&#xff0c;Mixer的架构完全基于多层感知器(mlp)&#xff0c;这些感知器可以在空间位置或特征通道上…

渗透测试 之 域渗透手法【域内用户枚举】手法 Kerbrute msf pyKerbrute 工具使用详解

说明一下: 域内用户枚举工具使用说说&#xff1a; Kerbrute pyKerbrute MSF模块的使用 域内用户名枚举原理分析&#xff1a; 域内用户枚举攻击防御&#xff1a; 流量检测&#xff1a; 日志层面&#xff1a; 说明一下: 域环境或者内网环境下&#xff0c;可以在没有域环…

深入理解Transformer的笔记记录(精简版本)---- ELMO->GPT->BERT

1、ELMO word embedding无法区分多义词的不同语义,其本质上是个静态的方式,所谓静态指的是训练好之后每个单词的表达就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的Word Embedding不会跟着上下文场景的变化而改变 ELMO根据当前上下文对Word Embed…

有趣的python库:用 difflib 实现文本差异的可视化

一&#xff0c;介绍 difflib 模块是Python标准库的一部分&#xff0c;提供了一系列用于比较序列的类和函数&#xff0c;特别适用于文本比较任务。这个模块可以帮助用户发现两个文本文件或字符串序列之间的差异&#xff0c;并以多种格式展示这些差异&#xff0c;比如这样&#…

400行程序写一个实时操作系统RTOS(开篇)

笔者之前突发奇想&#xff0c;准备写一个极其微小的实时操作系统内核&#xff0c;在经过数天的努力后&#xff0c;这个RTOS诞生了。令读者比较意外的是&#xff0c;它的程序只有400行左右。但就是这短短的400行&#xff0c;完成了动态内存管理、多线程、优先级、低功耗管理、调…

深度学习--------------------------------使用注意力机制的seq2seq

目录 动机加入注意力Bahdanau注意力的架构 总结Bahdanau注意力代码带有注意力机制的解码器基本接口实现带有Bahdanau注意力的循环神经网络解码器测试Bahdanau注意力解码器该部分总代码 训练从零实现总代码简洁实现代码 将几个英语句子翻译成法语该部分总代码 将注意力权重序列进…

BUG修复(不断整理想起什么就整理什么)

声明&#xff1a;此篇博文是记录本人从开始学习计算机过程中遇到的各种类型的报错以解决办法,希望给同道中人提供一点绵薄的帮助&#xff0c;也欢迎大家在评论区讨论或私信我交流问题 共同进步&#xff01; 一、FPGA系列 1.Synthesis failed 错误&#xff1a;综合失败&#…

Python | Leetcode Python题解之第468题验证IP地址

题目&#xff1a; 题解&#xff1a; class Solution:def validIPAddress(self, queryIP: str) -> str:if queryIP.find(".") ! -1:# IPv4last -1for i in range(4):cur (len(queryIP) if i 3 else queryIP.find(".", last 1))if cur -1:return &q…

测试工作能干到退休!从会写一份成长型测试周报开始

测试周报则是反映团队工作进展和专业态度的一扇窗口。通过周报&#xff0c;我们不仅可以展示一周内的工作成果&#xff0c;更可以体现团队的工作心态——是积极进取、不断学习的成长型心态&#xff0c;还是仅仅满足于现状、缺乏动力的躺平型心态。本文将带您深入了解这两种不同…

Vue 项目文件大小优化

优化逻辑 任何优化需求&#xff0c;都有一个前提&#xff0c;即可衡量。 那 Vue 加载速度的优化需求&#xff0c;本质上是要降低加载静态资源的大小。 所以&#xff0c;优化前&#xff0c;需要有一个了解项目现状的资源加载大小情况。 主要分 3 步走&#xff1a; 找到方法测…

k8s jenkins 动态创建slave

k8s jenkins 动态创建slave 简述使用jenkins动态slave的优势&#xff1a;配置jenkins动态slave配置 Pod Template配置容器模板挂载卷 测试 简述 持续构建与发布是我们日常工作中必不可少的一个步骤&#xff0c;目前大多公司都采用 Jenkins 集群来搭建符合需求的 CI/CD 流程&am…

8. 多态、匿名内部类、权限修饰符、Object类

文章目录 一、多态 -- 花木兰替父从军1. 情境2. 小结 二、匿名内部类三、权限修饰符四、Object -- 所有类的父类(包括我们自己定义的类)五、内容出处 一、多态 – 花木兰替父从军 1. 情境 我们现在新建两个类HuaMuLan和HuaHu。HuMuLan是HuaHu的女儿&#xff0c;所以她会有她父…

利用编程思维做题之链表内指定区间反转

牛客网题目 1. 理解问题 给定一个单链表和两个整数 m 和 n&#xff0c;要求反转链表中从位置 m 到位置 n 的节点&#xff0c;最后返回反转后的链表头节点。 示例&#xff1a; 输入&#xff1a;链表 1 -> 2 -> 3 -> 4 -> 5 -> NULL&#xff0c;m 2&#xff0c;…

《市场营销学》PPT课件.ppt

网盘&#xff1a;https://pan.notestore.cn/s.html?id29https://pan.notestore.cn/s.html?id29

山西农业大学20241011

03-JAVASCRIPT 一.数组二.BOM1. window对象2. location对象3. history对象4. navigator对象5. screen对象6. cookie对象 三.DOM操作1. 概述2. 查找元素2.1 id方式2.2 标签名方式2.3 class名方式2.4 css选择器方式 一.数组 <script>// 1. 创建数组, 通过数组字面量// …

不卷且创新idea:KAN+特征提取!10篇高分套路拆解,快来抄作业!

今天和大家分享一种创新的深度学习技术&#xff1a;KAN特征提取。 这种技术通过引入KAN来增强模型的特征处理能力&#xff0c;借由KAN的自适应激活函数&#xff0c;动态调整数据特性&#xff0c;从而有效提取更加准确的特征&#xff0c;实现更高性能的模型表现。 这种优势让K…

离散微分几何基础:流形概念与网格数据结构

一、流形概念的引入 &#xff08;一&#xff09;微分几何核心概念——流形 在微分几何的广袤领域中&#xff0c;流形概念占据着核心地位。它如同一个神秘的基石&#xff0c;支撑着我们对各种几何形状和空间的深入理解。就像网格和抽象的单纯复数是我们探索拓扑结构&#xff08…

使用阿里云盘将服务器上的文件上传/下载到云盘/服务器

阿里云盘官方文档&#xff1a; 具体的操作步骤这里都有&#xff1a; https://github.com/tickstep/aliyunpan 具体步骤 &#xff1a; 安装&#xff1a; wget https://github.com/tickstep/aliyunpan/releases/download/v0.3.4/aliyunpan-v0.3.4-linux-amd64.zip【这里最好下…