出入栈顺序解析

在笔试堆栈知识点中通常会考一道典型的出入栈题型,格式为:

已知按照0,1,2...9的顺序入栈,则下面哪个不能为出栈顺序?下面来进行分析。

入栈顺序:0,1,2,3,4,5,6,7,8,9

出栈情况分析:假如数字5出栈,则代表数字0,1,2,3,4肯定已经入栈,因为5只有入栈了才能出栈。

此时0,1,2,3,4是否已经出栈了呢?我们不清楚,可能其中部分已经出栈。下面来例举几种情况。

case1:0,1,2,3,4都没有出栈,则0-4的出栈顺序为43210

case2:数字3已经出栈,则数字5后面的0,1,2,4这四个数字的出栈顺序为4210

case3:数字2,4已经在5前面出栈,则在5的后面0,1,3的出栈顺序为310

case4:数字134已经在5前面出栈,则5后面0,2的出栈顺序为20.

case .....

综上分析:假如数字5已经出栈,我们无法确定0,1,2,3,4是否已在5的前面出栈,但是能肯定的是01234这几个数字中还没有在5前面出栈的某些数字,它们的出栈顺序肯定是从大到小。它们可以不完全,但顺序肯定不能变,否则就改变了栈的出入栈的规则。为此5后面的数字可以是43210,4210,4210,4310,4320,4321,410,420,432,421,430,等等太多了。

总之,只要记住5后面比它小的数字肯定安装降序从大到小排列就行了。笔试做题直接用排除法,如果某个大数后面比它小的不是降序排列,就是错误的出栈顺序。

 

 

 

 

 

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值