STL----栈

一:栈的概念 栈(stack)又名堆栈,是一种操作受限的线性表,只能在表的一端进行插入和删除操作,这一端 被称为栈顶,相对的,另一端被称为栈底。 向栈内添加新元素的操作叫做入栈、进栈、压栈, 删除元素叫做出栈、退栈。 由于栈中元素只能在一端进出,所以最先进入栈中的元素反而在最后才能出去,所以栈又被称作先进 后出(FILO—first in last out)线性表。

二:STL中stack的使用 (常见用法)

#include // 引入头文件 
stack s; // 新建栈s, 栈中元素类型为int. 还可以为 int、double、string等 
s.push(node); // 入栈操作,node元素入栈,node为定义的type类型
 s.top(); // 获取 栈顶元素 
s.pop(); // 出栈操作,删除栈顶的元素
 s.size(); // 返回栈中元素数量 
s.empty(); // 判断栈是否为空,如果为空则返回true

三: 栈练习 (1) 竞赛考题 在竞赛中,栈不只会在代码中用到,还会在非代码的选择题中遇到,做这类型题时,只要铭记任何 时候都有可能出栈即可完成:

【例1】元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。如果第一个出栈的是R3,那么 第五个出栈的不可能是( ) A.R1 B.R2 C.R4 D.R5 
【例2】对于入栈顺序为a, b, c, d, e, f, g 的序列,下列 ( ) 不可能是合法的出栈序列。 A. a, b, c, d, e, f, g B. a, d, c, b, e, g, f C. a, d, b, c, g, f, e D. g, f, e, d, c, b, a

(2) 基础练习 编写程序,使用STL中的stack库操作栈。 输入一个整数N ,表示有N个整数。 定义一个栈(stack),接下来输入N个整数,将其保存在栈中。 要求:第一行输出栈中元素的个数(使用size()函数) 进行一次出栈操作,第二行输出栈中元素的个数 第三行输出栈中的元素,以空格隔开

【输入】 6 6 4 7 9 2 1 
【输出】 元素个数:6 元素个数:5 2 9 7 4 6

(3) 括号匹配 代码中经常会出现多对括号互相嵌套的结构,小明发现只要匹配能够完成,无论多么复杂的嵌套结 构程序都能正确运行,而只要有一个地方出错,程序也能立马报错,小明猜想这其中一定有一套检验机 制在,他想自己尝试完成这套检验机制。 输入 一串括号序列(无空格),若匹配成功则输出"Yes",否则输出"No"。

【输入1】 ()()()  【输出1】 Yes 
【输入2】 ()(  【输出2】 No 
【输入3】 ((()))  【输出3】 Yes 
【输入4】 ((((()))  【输出4】 No
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值