一道值得思考的数据结构题目(入栈与出栈序列)

就业指导课上做的一道数据结构中有关栈的题目,当时一开始自己思考不全面,错选了。

一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()

A:n -3

B:n - 2

C:n - 1

D:无法确定


答案:C ( n - 1)个

看了别人的一些解析,觉得不够完善,下面给出自己的见解。

首先,栈的先进后出原则大家应该是知道的。

根据题意 p 2 = 3,可以知道 p 1 的可能情况有三种:1,2 或 4 。(看到有些人只想到了 1,2)

为啥这样想呢?这里估计还有一个关键是要考虑到 n 的大小

当 n = 3 时, p 2 = 3 的话,那么 p 1 有两种情况 1 和 2 。

  • 如果 p 1 = 1 , 那么 p 3 = 2 ;
  • 如果 p 1 = 2 ,那么 p 3 = 1 ;

此时的话我们就可以看到 p 3 只有两种可能 1 或者 2 (n - 1)个。

当 n > 3 时: p 2 = 3 的话,那么 p 1 有三种情况 1 , 2 和 4 。

  • 如果 p 1 = 1 , 那么 p 3 = 2,4,5,… n (n - 2)个
  • 如果 p 1 = 2 ,那么 p 3 = 1,4,5,… n (n - 2)个
  • 如果 p 1 = 4 ,那么 p 3 = 2,5,6,… n (n - 3)个

此时的话我们就可以看到 p 3 的情况有 1,2,4,5,… n (n - 1)个。

综上所述就是 p 3 可能取值的个数是 (n - 1)个。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhisheng_blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值