408考研逐题详解:2009年第2题

2009年第2题

设栈 S 和队列 Q 的初始状态均为空,元素 a,b,c,d,e,f,g 依次进入栈 S。若每个元素出栈后立即进入队列 Q,且 7 个元素出队的顺序是 b,d,c,f,e,a,g,则栈 S 的容量至少是( )

A.1 \qquad B.2 \qquad C.3 \qquad D.4

知识点提炼及解释

  1. 栈(Stack):一种只能在一端进行插入或删除操作的线性表,遵循先进后出(Last In First Out, LIFO)的原则。
  2. 队列(Queue):一种只允许在一端进行插入操作,在另一端进行删除操作的线性表,遵循先进先出(First In First Out, FIFO)的原则。
  3. 栈的容量:指栈在任何时候能够容纳的最大元素数目。

方法 1

由于队列遵循“先进先出”的原则,所以,最终队列 Q 的出队序列,即为其入队序列。根据题目已知,每个元素出站后立即入队,则此序列也就是元素的出栈序列。因此,各个元素入栈和出栈过程描述如下:

在这里插入图片描述

  1. a, b 进栈,而后 b 出栈
  2. c, d 进栈,而后 d 出栈
  3. c 出栈
  4. e, f 进栈,而后 f 出栈
  5. e 出栈
  6. a 出栈
  7. g 进栈,再出栈

如此即得到了出栈序列 b, d, c, f, e, a, g

则本题答案为:C,栈的容量至少是 3.

方法 2

对于栈 S 而言,只有进栈(Push(S,x))和出栈(Pop(S, x))两种操作,只要执行了进栈操作,则意味着栈内元素数量增 1,执行了出栈操作,则意味着栈内元素数量减 1。根据题目可知,对于栈 S 而言,其进栈和出栈的顺序如下表,并同时在表中列出元素数的变化(初始为 0 )

操作顺序栈内元素数量
Push(S, a)1
Push(S, b)2
Pop(S, b)1
Push(S, c)2
Push(S, d)3
Pop(S, d)2
Pop(S, c)1
Push(S, e)2
Push(S, f)3
Pop(S, f)2
Pop(S, e)1
Pop(S, a)0
Push(S, g)1
Pop(S, g)0

从上表可知,栈内元素最多数量是 3 个,所以本题中栈的容量至少是 3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CS创新实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值