依次读入数据元素序列{a, b, c, d, e, f, g} 进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下那些序列

数据结构有一道题是这样的:依次读入数据元素序列{a, b, c, d, e, f, g} 进栈,每进一个元素,机器可要求下一个元素进栈或弹栈,如此进行,则栈空时弹出的元素构成的序列是以下那些序列?( )

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

解析:首先这题应该选择 A,是单选题。其次这题中 B 和 C 都是不合法序列,而 A 和 D 都是合法序列,所以疑惑的点应该在于为什么选择 A。书本上的答案解析是这样的:

在这里插入图片描述让人摸不着头脑,不过我们可以得知一个强调信息 ”栈空时“

先来看为什么 B 和 C 是不合法的序列:

在这里插入图片描述
在这里插入图片描述
而 A 和 D 都是合法序列,但题目要求的是 “栈空时弹出的元素构成的序列”,也就是说当栈为空时,弹出的元素构成的序列就是答案。如下图所示( 表示入栈; 表示出栈),在 A 选项中,a 处于栈底,当 a 弹出后,此时就已经栈空,弹出的元素构成的序列也就是 A 选项,并且入栈的所有元素都在出栈序列中;D 选项也是 a 处于栈底,当 a 弹出后也是栈空状态,属于第一次栈空,但此时已经弹出栈的元素序列是 { c, d, b, e, f, a},是缺少了 g 元素的,而当 g↑g↓ 执行后才能是 D 选项的结果,但这时已经是第二次栈空了,不太符合题意。

在这里插入图片描述
[注]:以上都是个人理解,若有疑惑可在评论区讨论进行修正。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值