卡码网语言基础课 | 19. 洗盘子

 

目录

 一、 栈的基本概念

二、 栈的操作

2.1 引入头文件

2.2 创建栈

2.3 栈的基本认识

 三、 解答


通过本次练习,将学习到以下 C++知识点:

  • 栈的基本概念(空栈、栈顶、栈底)和特点(先入后出)
  • 入栈、出栈、获取栈顶元素和判断栈是否为空栈等基本操作
  • stack的定义和使用

题目描述:

假设你手里有一个盘子堆放区。现在需要模拟洗盘子的过程,每个盘子都有一个编号。 

盘子堆放区操作说明: 

1. 当操作为 1 时,表示从盘子堆放区拿走顶部的盘子清洗。
2. 当操作为 2 时,表示有未洗的盘子放入盘子堆放区。 

在一系列操作之后,你需要回答:下一个清洗的盘子编号?

输入描述:

第一行有一个整数 n,代表初始盘子堆放区中盘子的数量为 n。 

第二行有 n 个整数,代表了盘子的编号,同时整数之间的顺序也代表了未洗盘子加入盘子堆放区的顺序。 

第三行为一个整数 m,代表接下来将会有 m 次操作。 

接下来一共有 m 行,代表共有 m 次操作。 

如果是操作 1,那么该行只会有一个数字 1,代表有一个盘子被拿走清洗。 

如果是操作 2,那么该行有两个数字,第一个数字 2 表示有未洗的盘子加入,第二个数字代表未洗的盘子编号。

输出描述:

输出共一行,为下一个该清洗的盘子编号。 如果没有下一个该清洗的盘子,那么请输出 “All the dishes have been washed.”

 一、 栈的基本概念

简单理解为:待清洗盘子来说是出栈,对于已清洗区域来说,是入栈(进栈)

栈这种结构只能在一侧(栈顶那一侧)进行插入和删除操作,而且是后进先出LIFO(后进入栈的元素离栈顶比较近,先出来),允许进行插入和删除的那一端是栈顶,与之对应的另一端是栈底, 如果一个栈不包含任何元素,这个栈被称为空栈。

栈的应用:

在计算机领域,栈的应用也十分广泛,比如浏览器的历史回退和编写文档时的“撤销”操作。

二、 栈的操作

2.1 引入头文件

C++标准库提供了一个名为 std::stack 的栈容器适配器,想要使用它,只需要引入<stack>头文件即可。

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

2.2 创建栈

通过stack数据类型 栈名称这样的形式来创建一个栈并进行操作了

 stack<int> st; // 创建一个int类型的栈st

2.3 栈的基本认识

  • empty(): 判断栈是否为空栈,如果为空栈返回true, 否则或者false
  • push(): 进栈操作,将新的元素放入到栈中,新的元素成为栈顶元素。
  • pop(): 出栈操作,栈顶元素从栈中离开
  • top(): 获取栈顶元素,但是不会移除它
  • size(): 获取栈的长度,即栈中元素的数量
st.push(1);
st.push(10);
st.push(100); // 往栈中添加元素,现在栈底元素是1,栈顶元素是100st.pop(); // 移除栈顶元素100,新的栈顶元素是10int topNumber = st.top(); // 获取栈顶元素10bool isEmpty = st.empty(); // 如果栈为空,返回true;否则返回falseint stackSize = st.size(); // 获取栈的长度(元素数量)

 三、 解答

#include <iostream>
#include <stack> //引入stac头文件
using namespace std;
int main(){int n, m, opt, val, num;cin >> n; //输入盘子的数量stack<int> zhan; //新构建一个名为zhan的整数类型结构while(n--){cin >> val;zhan.push(val);//将盘子编号使用push放入zhan中}cin >> m;while(m--){cin >> opt;//判断栈是否为空if(opt == 1 && !zhan.empty()) zhan.pop(); //使用pop操作,将栈顶元素推出else{cin >> num;zhan.push(num);}}//使用empty()操作判断是否为空栈if(zhan.empty()) cout << "All the dishes have been washed." << endl;else cout << zhan.top() << endl; //使用top()获取栈顶元素
}

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

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

相关文章

PostGIS学习教程十:空间索引

PostGIS学习教程十&#xff1a;空间索引 回想一下&#xff0c;空间索引是空间数据库的三个关键特性之一。空间索引使得使用空间数据库存储大型数据集成为可能。在没有空间索引的情况下&#xff0c;对要素的任何搜索都需要对数据库中的每条记录进行"顺序扫描"。索引通…

设计模式——七大设计原则

设计模式——七大设计原则 1、单一职责原则&#xff08;SRP&#xff09;2、开放封闭原则&#xff08;OCP&#xff09;3、依赖倒转原则&#xff08;DIP&#xff09;4、里氏替换原则 (LSP)5、接口隔离原则 (ISP)6、合成/聚合复用原则 (CARP)7、迪米特法则 (LoD) 了解 设计模式 的…

网络编程HTTP协议进化史

一、Http报文格式 具有约定格式的数据块 请求报文 request 状态行&#xff1a;本次请求的请求方式&#xff08;post get&#xff09;资源路径url http 协议的版本号&#xff0c;中间用空格划分 本次请求的请求方式&#xff08;post get&#xff09;资源路径url http 协议…

如何使用llm 制作多模态

首先将任何非字符的序列信息使用特殊n个token 编码。 具体编码方法以图像为例子说明&#xff1a; 将固定尺寸图像如256256 的图像分割为1616 的子图像块。 将已知的所有图像数据都分割后进行str将其看做是一个长的字符&#xff0c;而后去重后方式一个词表。 使用特殊1024 个tok…

ajax检查密码是否一致

如果你只需要在前端展示密码是否匹配的信息而不涉及后端处理&#xff0c;可以通过纯HTML和JavaScript实现。以下是一个简单的例子&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…

解决方案:Mac 安装 pip

python3 --version 通过以下命令来下载pip&#xff1a; curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl命令允许您指定一个直接下载链接。使用-o选项来设置下载文件的名称。 通过运行以下命令安装下载的包&#xff1a; python3 get-pip.py

【开源】基于JAVA的医院门诊预约挂号系统

项目编号&#xff1a; S 033 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S033&#xff0c;文末获取源码。} 项目编号&#xff1a;S033&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

Day02 Liunx高级程序设计2-文件IO

系统调用 概念 是操作系统提供给用户使其可以操作内核提供服务的一组函数接口 用户态和内核态 其中 ring 0 权限最高&#xff0c;可以使用所有 CPU 指令&#xff0c; ring 3 权限最低&#xff0c;仅能使用 常规 CPU 指令&#xff0c;这个级别的权限不能使用访问硬件资…

深度学习在图像识别中的应用

深度学习在图像识别中的应用 摘要&#xff1a;本文介绍了深度学习在图像识别领域的应用&#xff0c;包括卷积神经网络&#xff08;CNN&#xff09;的基本原理、常见模型以及在图像识别中的优势。并通过实验展示了深度学习在图像识别中的实际应用和效果。 一、引言 随着数字化…

react传值

在React中&#xff0c;父组件向子组件传递数据是通过props实现的&#xff0c;而子组件向父组件传递数据则需要通过回调函数的方式。对于爷孙组件之间的通信&#xff0c;可以通过在中间组件上设置props和回调函数来传递数据。兄弟组件之间的通信则需要通过共享状态或者通过父组件…

写给初学者的 HarmonyOS 教程 -- 状态管理(@State/@Prop/@Link 装饰器)

State 装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI 会发生对应的渲染改变&#xff08;类似 Compose 的 mutablestateof &#xff09;。 Prop 装饰的变量可以和父组件建立单…

深度学习在计算机视觉中的应用

深度学习在计算机视觉中的应用 摘要&#xff1a;本文介绍了深度学习在计算机视觉领域的应用&#xff0c;包括目标检测、图像分类、人脸识别等。通过分析深度学习在计算机视觉中的实际应用案例&#xff0c;阐述了深度学习在计算机视觉中的优势和未来发展趋势。 一、引言 计算…

学习SpringCloud

JWT JWT&#xff08;JSON Web Token&#xff09;是一种用于在网络应用间传递信息的安全标准。JwtTool生产成 三个部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&#xff08;Signature&#xff09;。 工作流程如下&…

更新 Node.js 和 npm 使用 nvm

更新 Node.js 和 npm 使用 nvm 问题: 当前 Node.js 版本为 16.20.2&#xff0c;不兼容所需的 npm 版本 10.2.4。需要的 npm 版本 10.2.4 要求 Node.js 版本至少为 18.17.0 或更高。 解决步骤: 查看可用的 Node.js 版本 使用 nvm list available 命令来查看所有可安装的 Node…

【C++ protobuf中对不同消息内容进行赋值的方式】

本文中用到的消息结构&#xff1a; message PointNameInfo {optional double longitude 1;// 经度坐标optional double latitude 2;// 纬度坐标optional uint64 timestamp_sec 3;// 时间戳optional uint32 scale 4;optional string name 5; }message PointInfo {optional…

C++之vector插入初始化性能优化

C整理集合C刷题基础知识&#xff08;栈、队列、hash、STL、基础函数等&#xff09;---持续更新-CSDN博客 vector的高级使用&#xff08;优化&#xff09; 1、元素插入&#xff08;优化&#xff09; 对于vector的元素插入存在两个函数push_back()以及emplace_back()&#xff…

记录 | CUDA编程中用constexpr替代__host____device__

比如用 __host__ & __device__ 的情况如下&#xff1a; #include <cstdio> #include <cuda_runtime.h>__host__ __device__ void say_hello(){printf("Hello, world!\n"); }__global__ void kernel(){say_hello(); }int main(){kernel<<<1…

使用rust slint开发桌面应用

安装QT5&#xff0c;过程省略 安装rust&#xff0c;过程省略 创建工程 cargo new slint_demo 在cargo.toml添加依赖 [dependencies] slint "1.1.1" [build-dependencies] slint-build "1.1.1" 创建build.rs fn main() {slint_build::compile(&quo…

8.HTTP工作原理

HTTP是什么 HTTP工作原理 HTTP协议的请求类型和响应状态码 总结 1.HTTP是什么 HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则 2.HTTP工作原理 HTTP超文本传输协议的本质是TCP通信&#xff0c;链接—>请求—>响应—>断开 3.HTTP协议的请求类型和响应状…

qt/c/c++文件操作总结

1. 读取文件 1.1 Qt以二进制方式读取大文件返回char* 在Qt中以二进制模式读取一个大文件(以500MB为例)并将其内容存储到char*数组中,需要谨慎处理内存分配。以下是实现这一功能的步骤和示例代码: 1. 打开文件 使用QFile类以二进制模式打开文件。 2. 检查文件大小 使用…