(三十二)栈(stack)

news2024/11/16 15:30:11

文章目录

  • 栈(stack)
    • 1.1 操作
    • 1.2 关于栈的题目
      • 1.2.1 出栈顺序
      • 1.2.2 入栈顺序
      • 1.3.3 括号匹配

这篇文章将会讲两个不同的数据类型,分别是栈与队列(双向队列是两个的拓展)

栈(stack)

栈是一种特殊的数据类型,它遵守先进后出(FILO, First In Last Out)规则。

1.1 操作

这是栈的图片

想要使用栈,我们可以导入头文件#include <stack>

随后使用stack<Typ> T; 的格式来定义一个类型为Typ的栈:T

栈有这些函数

  1. T.push(x):在T的栈顶插入一个元素x
  2. T.pop():删除T的栈顶
  3. T.top():返回T的栈顶
  4. T.size():返回T的大小
  5. T.empty():判断T是否为空,是返回1,不是返回0(bool类型)

1.2 关于栈的题目

1.2.1 出栈顺序

❗常见题型❗
例题: 有一个序列以 a , b , c , d , e , f , g a,b,c,d,e,f,g a,b,c,d,e,f,g 的顺序入栈,下列( )不是合法的出栈序列?(单选题)

  • A. d , c , f , e , g , b , a d, c, f, e, g, b, a d,c,f,e,g,b,a
  • B. g , f , e , d , c , b , a g, f, e, d, c, b, a g,f,e,d,c,b,a
  • C. a , b , e , c , d , g , f a, b, e, c, d, g, f a,b,e,c,d,g,f
  • D. a , b , c , d , e , f , g a, b, c, d, e, f, g a,b,c,d,e,f,g

A. a , b , c , d a, b, c, d a,b,c,d依次入栈,随后 d , c d, c d,c出栈,然后 e , f e, f e,f入栈后再倒序出栈,再让 g g g入栈,最后全部出栈
B. a , b , c , d , e , f , g a, b, c, d, e, f, g a,b,c,d,e,f,g全部入栈,随后全部出栈
C. a , b , c , d , e a, b, c, d, e a,b,c,d,e入栈, e e e出栈,随后 c c c出栈,但 c c c不是栈顶,因此不合法
D. a a a入栈, a a a出栈, b b b入栈, b b b出栈,…, g g g入栈, g g g出栈

1.2.2 入栈顺序

❗常见题型❗
例题: 有一个栈以 a , b , c , d , e a, b, c, d, e a,b,c,d,e 的顺序出栈,下列( )合法的入栈序列?(多选题)

  • A. a , e , c , d , b a, e, c, d, b a,e,c,d,b
  • B. e , d , c , a , b e, d, c, a, b e,d,c,a,b
  • C. a , d , c , e , b a, d, c, e, b a,d,c,e,b
  • D. d , b , e , c , a d, b, e, c, a d,b,e,c,a

不用多说了吧,就是出栈顺序的逆向思维
要注意题目的关键字不是,就像考试一样

1.3.3 括号匹配

❗完善程序❗

输入一个由()[]四种符号构成的字符串。判断其中的括号是否匹配,是,就输出yes,否则输出no。
比如:输入“([])”、“([()])”、“[((()))]”、“()[][][]”这几个字符串(双引号内部的内容),我们都算是匹配的。
再比如:输入“([)”、“([)]”、“([(]))”这几个字符串,我们都认为是不匹配的

#include <iostream>
#include <stack>
#include <string>

using namespace std; 

int main() {
    string s; 
    cin >> s; 
    stack<char> T; 
    for(int i=0; i<s.size(); ++i) {
        if(s[i]=='('||s[i]==) {
        	T.push(); 
        } else if() {} else {
        	cout << "no"; 
        	return 0; 
        }
    }
    cout << (?"yes":"no"); 
    return 0; 
}

(1) ①处应填( )

  • A. ')'
  • B. '['
  • C. ']'
  • D. '('

(2) ②处应填( )

  • A. 'T.top()'
  • B. T[i]
  • C. s[i]
  • D. i

(3)③处应填( )

  • A. !T.empty()&&T.top()=='('&&s[i]==')'||!T.empty()&&T.top()=='['&&s[i]==']'
  • B. T.empty()&&T.top()=='('&&s[i]==')'||T.empty()&&T.top()=='['&&s[i]==']'
  • C. !T.empty()&&T.pop()=='('&&s[i]==')'||!T.empty()&&T.pop()=='['&&s[i]==']'
  • D. !T.empty()&&T.top()=='('&&T[i]==')'||!T.empty()&&T.top()=='['&&T[i]==']'

(4)④处应填 ( )

  • A. T.push(s[i])
  • B. T.pop()
  • C. T.push(T.top())
  • D. T.push(i)

(5)⑤处应填( )

  • A. !T.empty()
  • B. !s.size()
  • C. !s.empty()
  • D. !T.size()

预览 发生了变更

  • 二十五:递归
  • 二十六:vector容器
  • 二十七:递推
  • 二十八:set容器
  • 二十九:map容器
  • 三十:二分查找
  • 三十一:前缀和与差分
  • 三十二:栈(stack)
  • 三十三:队列(queue)
  • 三十四:常见算法汇总
  • 三十五:链表
  • 三十六:树
  • 三十七:图
  • 三十八:赛事的坑有多大

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

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

相关文章

自闭症孩子送寄宿学校,给他们成长的机会

在自闭症儿童的教育与康复之路上&#xff0c;选择一种合适的寄宿方式对于孩子的成长至关重要。这不仅关乎到孩子能否获得专业的训练与关怀&#xff0c;还直接影响到他们未来的社交能力、独立生活能力以及心理健康。今天&#xff0c;我们将以广州的星贝育园自闭症儿童寄宿制学校…

stm32单片机个人学习笔记6(EXTI外部中断)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…

【动态库的加载】【进程地址空间(三)】

目录 1. 宏观看待动态库的加载2. 进程地址空间第二讲2.1 程序没有加载前的地址2.2 程序加载后的地址 3. 动态库的地址 再谈进程地址空间时&#xff0c;【Linux】动静态库 我们先讲一个关于动态库是如何加载的话题&#xff0c;再引入进程地址空间&#xff0c;再次谈论该话题。 …

在ComfyUI中,Cross-Attention优化方案应该选哪个?

&#x1f431;‍&#x1f409;背景 在comfyui中&#xff0c;如果你使用了秋叶的启动器&#xff0c;会在高级选项中看到这样一行选项&#xff1a;Cross-Attention优化方案&#xff0c;右边有个下拉框&#xff0c;可以选择的选项有4个&#xff0c;如下图&#xff1a; 那么&#…

设计模式之观察者模式例题

答案&#xff1a;D 知识点&#xff1a; 观察者模式意图是定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新 状态模式 意图&#xff1a;允许一个对象在其内部状态改变时改变它的行为

【verilog】4. gtkwave的调用

文章目录 前言实验步骤 前言 进行 数电 FPGA 实验 实验步骤 将 GTKwave 的 bin 文件夹路径添加到 “系统环境变量” 的 “Path” 中 启动 debugger wizard, 设置观测信号 编译选择 2进制 文件 点击 start programming connect debugger 选择触发方式 Run 自动打开 gtkwave&a…

[Meachines] [Medium] Querier XLSM宏+MSSQL NTLM哈希窃取(xp_dirtree)+GPP凭据泄露

信息收集 IP AddressOpening Ports10.10.10.125TCP:135, 139, 445, 1433, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670, 49671 $ nmap -p- 10.10.10.125 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 135/tcp open msrp…

【若依RuoYi-Vue | 项目实战】帝可得后台管理系统(二)

文章目录 一、人员管理1、需求说明2、生成基础代码&#xff08;1&#xff09;创建目录菜单&#xff08;2&#xff09;添加数据字典&#xff08;3&#xff09;配置代码生成信息&#xff08;4&#xff09;下载代码并导入项目 3、人员列表改造&#xff08;1&#xff09;基础页面&a…

机器学习算法那些事 | TPAMI 2024.9 | FeatAug-DETR:通过特征增强丰富DETRs的一对多匹配

本文来源公众号“机器学习算法那些事”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;TPAMI 2024.9 | FeatAug-DETR&#xff1a;通过特征增强丰富DETRs的一对多匹配 论文标题&#xff1a;FeatAug-DETR: Enriching One-to-Many Mat…

智能指针:作用 | 使用 | 原理 | 内存泄漏

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

golang学习笔记4-基本数据类型

注&#xff1a;本人已有C&#xff0c;C,Python基础&#xff0c;只写本人认为的重点。 go的数据类型如下 由于bool和c类似&#xff0c;和go的区别是&#xff0c;bool的值只能取true和false&#xff0c;不能取整数&#xff0c;而且有默认值false。 一、整数型 整数型存放整数&…

设计模式之策略模式例题

答案&#xff1a;A 知识点&#xff1a; 策略模式又叫模板方法模式 它的意图是定义一个操作中的算法骨架。而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤

3.5.2 __ipipe_init()之完成中断处理程序设置

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 原创不易&#xff0c;需要大家多多鼓励&#xff01;您的关注、点赞、收藏就是我的创作动力&#xff01; 3.5.2 __ipipe_init()之完成中断处理程序设置 __ipipe_init()最核心的就是__ipipe_enable_pipeline()&am…

分享两道算法题

分享两道算法题 王者荣耀分组 题目描述 部门准备举办一场王者荣耀表演赛&#xff0c;有 10 名游戏爱好者参与&#xff0c;分 5 为两队&#xff0c;每队 5 人。 每位参与者都有一个评分&#xff0c;代表着他的游戏水平。 为了表演赛尽可能精彩&#xff0c;我们需要把 10 名参赛…

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)

十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式) 文章目录 十七&#xff0c;Spring Boot 整合 MyBatis 的详细步骤(两种方式)1. Spring Boot 配置 MyBatis 的详细步骤2. 最后&#xff1a; MyBatis 的官方文档&#xff1a;https://mybatis.p2hp.com/ 关于 MyBa…

内网渗透-红日1

红日靶场1 渗透测试过程外网打点突破边界内网横向权限维持最后 渗透测试过程 本文章只说明渗透测试思路和技巧&#xff0c;对域靶场搭建不进行赘述 web-ip外网设置为 192.168.119.130&#xff0c;kali和外网ip同网段 外网打点 kali扫描目标ip nmap扫描目标网段   nmap -P…

【记录】大模型|Windows 下 Hugging Face 上的模型的通用极简调用方式之一

这篇文是参考了这篇&#xff0c;然后后来自己试着搭了一下&#xff0c;记录的全部过程&#xff1a;【翻译】Ollama&#xff5c;如何在 Ollama 中运行 Hugging Face 中的模型_ollama 导入 huggingface-CSDN 博客 另外还参考了这篇&#xff1a;无所不谈,百无禁忌,Win11 本地部署无…

【C++初阶】探索STL之——vector

【C初阶】探索STL之——vector 1.什么是vector2.vector的使用2.1 vector的定义2.2 vector iterator(迭代器)的使用2.3 vector空间问题2.4 vector的增删查改2.5 vector迭代器失效的问题2.5.1 vector常见迭代器失效的操作 3 动态二位数组 1.什么是vector vector其实就是一个可以…

iPhone16,超先进摄像头系统?丝滑的相机控制

iPhone 16将于9月20号正式开售&#xff0c;这篇文章我们来看下iPhone 16 在影像方面&#xff0c;有哪些升级和新feature。 芯片&#xff1a;采用第二代 3纳米芯片&#xff0c;A18。 摄像头配置&#xff1a; iPhone 16 前置&#xff1a;索尼 IMX714 &#xff0c;1200 万像素&am…

SQL 多表联查

目录 1. 内联接&#xff08;INNER JOIN&#xff09; 2. 左外联接&#xff08;LEFT JOIN&#xff09; 3. 右外联接&#xff08;RIGHT JOIN&#xff09; 4. 全外联接&#xff08;FULL JOIN&#xff09; 5. 交叉联接&#xff08;CROSS JOIN&#xff09; 6. 自联接&#xff0…