给出入栈序列为A,B,C,D,E,可能的出栈序列

最近遇到一道笔试题

      给出入栈序列为A,B,C,D,E,可能的出栈序列

1.ABCDE

2.EDCBA

3.DECBA

4DCEAB

看到这个题,我的第一感觉就是先进后出,结果应该唯一啊

      后来在网站上搜了一下,发现果然存在问题,问题出在入栈可能不是一次性进去。

也就是说A进入后,可能直接就出栈了,然后A就是第一个出栈的元素。

      而如果B第一个出栈,代表A还在栈中;

      以此类推,如果D先出栈,则ABC还在栈中,即可能出现DECBA,DCBAE等情况,

他们有个特点就是CBA的顺序不能变,而E可以随意插入(在D后面)

     明显只有4出错

      

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
我们可以用模拟出入过程来判断序列的合法性。具体做法是:按照入序列中的顺序将数字一个一个压入中,每次压入后判断顶元素是否与序列的第一个元素相等。如果相等,则弹顶元素并将序列的指针向后移动一位。最后,当入序列中的所有元素都被压入中后,我们判断是否为空,若为空则说明序列是合法的,否则说明不合法。 根据上述方法,我们可以得以下结论: A. 1,2,4,3 是合法的序列,因为我们可以按照下面的步骤模拟过程: - 将1压入中,此时为:1 - 将2压入中,此时为:1,2 - 将3压入中,此时为:1,2,3 - 将3从中弹,此时为:1,2 - 将4压入中,此时为:1,2,4 - 将4从中弹,此时为:1,2 - 将2从中弹,此时为:1 - 将1从中弹,此时为空 B. 2,1,3,4 是不合法的序列,因为在将3压入中之后,中的元素为1,2,3,但序列的第一个元素是2,与顶元素不匹配,因此该序列不合法。 C. 1,4,3,2 是不合法的序列,因为在将4压入中之后,中的元素为1,2,3,4,但序列的第一个元素是1,与顶元素不匹配,因此该序列不合法。 D. 4,3,1,2 是不合法的序列,因为在将1压入中之后,中的元素为1,2,3,4,但序列的第一个元素是4,与顶元素不匹配,因此该序列不合法。 E. 3,2,1,4 是合法的序列,因为我们可以按照下面的步骤模拟过程: - 将1压入中,此时为:1 - 将2压入中,此时为:1,2 - 将3压入中,此时为:1,2,3 - 将3从中弹,此时为:1,2 - 将2从中弹,此时为:1 - 将1从中弹,此时为空 - 将4压入中,此时为:4 - 将4从中弹,此时为空 因此,选项 B、C 和 D 都不可能序列,选项 A 和 E 可以是序列

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值