首页 > 试题广场 >

如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()

[不定项选择题]
如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()
注:一个元素进栈后可以马上出栈,不用等全部进栈
  • e3,e1,e4,e2
  • e2,e4,e3,e1
  • e2,e3,e4,e1
  • 任意顺序都有可能
看错,选了A这个不可能出现的顺序…
发表于 2019-07-22 15:51:04 回复(1)

条件一.进栈顺序、e1、e2、e3、e4

条件二.1个元素进栈后可以马上出栈。

注:栈的规则—先进后出

那么出栈顺序有以下情况:

栈里留0个元素出栈顺序为:

1234

栈里留1个元素出栈顺序为

2341

1342

1243

栈里留2个元素出栈顺序为

3421

2431

1432

栈里留3个元素出栈顺序为

4321

所以综上比较正确答案,如果所有可能都可以的话,那肯定不止这几种情况的哈,画了图手机纯手打,省略了重复的情况

发表于 2020-01-06 13:25:31 回复(4)
栈的规则:先进后出
例如进栈序列为:1,2,3,4
全部进栈完成再出栈的序列则为:4,3,2,1
注:一个元素进栈后可以马上出栈,不用等全部进栈

例如:2这个元素一进就想出了,后面的3,4正常进栈再出栈。
那么出栈顺序就是:2,4,3,1  (1是第一个进的,进的时候也没有立刻出去,所以被压在栈底,最后才能出去)

例如:2这个元素一进就想出了,后面的3一进也想立刻想出去了,后面的4跟着进栈
那么出栈顺序就是:2,3,4,1  (2,3都进了立刻出 所以这时4压着的是1,所以出栈顺序是4在前面)

发表于 2020-02-06 20:19:35 回复(7)
A.若e3先出,说明e1,e2肯定没出且是连着的,所以e1若出来的前提是e2先出来,故A错
B,C以此类推
要记住先进后出;
且条件是一个元素进栈后可以马上出栈,不用等全部进栈,也就是说进了就可以立刻出去,不需要等后面的进栈之后再挨个出去。
发表于 2021-08-26 15:23:57 回复(0)
从第一个开始为基准,后面比它大的排序无所谓,比它小的逆序,然后以第二个为基准,比它大的无所谓,比它小的逆序,这样依次,不满足就不行,有一次百度看见的,当然弄懂原理更重要,可借鉴。
发表于 2021-04-21 09:11:00 回复(0)
e3若先出栈说明1、2被压,那么4进栈后会先于1、2出栈
发表于 2019-11-01 17:08:32 回复(0)
这种顺序进栈,中途可出栈,求出栈序列的题目是有规律的,假设元素进栈顺序为从小到大进栈,得到的每个可能的出栈序列须满足: 对于其中任一个元素k,要么,其后边的出栈元素都大于k;要么,其后边的出栈元素中小于k的那些元素按递减顺序排列。题目给的元素少可以测试选项,但元素多的话还是要掌握规律。
发表于 2022-01-08 17:55:23 回复(1)
这题我觉得可以从答案给的顺序去判断
首先A选项是e3先出,那么表示e4还没来得及出去就被阻拦了,所以被压倒了栈底 根据先进后出也就是e4应该在最后面
依次根据B和C的首个进栈顺序去判断哪个被压倒了栈底.
发表于 2020-01-07 19:15:08 回复(0)
先进栈等的,又来一个,要等来的这个出了才能再出
发表于 2019-09-05 21:34:40 回复(0)
记住一句话就够了:出栈序列中每个元素后面所有比它先进栈的元素必须是递减序列
发表于 2021-09-16 22:20:16 回复(0)
注:一个元素进栈后可以马上出栈,不用等全部进栈.....
是我没读懂嘛????😥
一个元素进栈,可以马上出去,那么我e1进栈岂不是可以马上进去,不用等e2,e3,e4,那这个样子,我可以猜想为栈中永远都只有一个.....我觉得有很多可能啊- - 
发表于 2019-11-08 10:03:03 回复(2)
根据先进后出原则,分析a选项3.1.4.2 既然进栈顺序定了,那么假定3先出,肯定是1压到栈最底,在2下面,那么3后面要么是2,要么是新进来的4。2不出1肯定出不来
发表于 2019-10-29 08:50:36 回复(0)
作者:编程小海浪
链接:https://www.nowcoder.com/questionTerminal/8348861dc2004615a4d9bf5528a32bf6?toCommentId=4199405
来源:牛客网
我说一下我的思路,我觉得做这类题,先看给出的出栈序列,排在最前面的肯定是最先出栈的,B应该是12进栈(这里12一起进栈或者说1和2依次一个一个进栈都是可以的),然后2出栈,2排在了最前面,然后34进栈(或者说依次,同前理),这时候1还没有出栈,被压在了栈底。然后34一起出栈,顺序变为43,排在2后面。外面的顺序是243,最后呢,把压在栈底的1再出栈,顺序是2431
C选项同样12进栈,然后2出栈,3进栈,3出栈,4进栈,4出栈,外面的顺序是234,在这个过程中同样1被压在了栈底,最后1出栈,顺序是2341
那么A为什么错呢?因为3是最先出栈的,那么出栈前3要入栈,入栈顺序万古不变的1234,  3入栈前12必须入栈,不管是一个一个还是一起,都要入栈,12入栈后压在下面不能出,出了3就不是出栈首位了。所以3出栈后要么是2出栈变为32,要么是4进栈出栈变为34,1无论怎么都不能跟在3后面,因为被2压在了栈底,
其实这种题仔细分析不难,类似华容道游戏
发表于 2019-09-21 17:12:58 回复(2)
  1. 对于 A 来说:如果出栈顺序中 e3 要第一个出栈,那么必须先让e1和e2入栈,才能让e3入栈后再出栈。但是这样子就无法让e1作第二个出栈的,因为e1之前还有个e2,必须先把e2出栈了,e1才能出栈,所以不可能有e3、e1的出栈顺序。
  2. 对于 B 来说:画一个图:
    栈: [e1)             入栈 e1
    栈: [e1、e2)         入栈 e2
    栈: [e1)             出栈e2: {e2}
    栈: [e1、e3)         入栈 e3
    栈: [e1、e3、e4)     入栈 e4
    栈: [e1、e3)         出栈e4: {e2、e4}
    栈: [e1)             出栈e3: {e2、e4、e3}
    栈: [)               出栈e1: {e2、e4、e3、e1}
  3. 对于 C 来说:画一个图:
    栈: [e1)             入栈 e1
    栈: [e1、e2)         入栈 e2
    栈: [e1)             出栈e2: {e2}
    栈: [e1、e3)         入栈 e3
    栈: [e1)             出栈e3: {e2、e3}
    栈: [e1、e4)         入栈e4
    栈: [e1)             出栈e4: {e2、e3、e4}
    栈: [)               出栈e1: {e2、e3、e4、e1}
发表于 2023-12-20 16:55:14 回复(0)
大意了,没有闪,
发表于 2021-09-06 13:03:04 回复(1)
一个元素进栈后可以马上出栈,不用等全部进栈,这句话很重要
发表于 2021-03-04 16:54:30 回复(0)
<p>e2在栈底的原因只有一个,e1入站就弹出</p><p><br></p>
发表于 2020-11-18 04:14:19 回复(0)
D选项,任意顺序都有可能,我的理解是任意顺序都有可能对,有可能错🤣🤣
发表于 2020-06-14 11:20:52 回复(0)
这类题的思路有人能解释下吗,我只知道栈是先进后出
发表于 2019-09-18 13:57:30 回复(1)
这个题我说下我的做法,直接分析答案。
1、如果e2出栈,说明e1已经进栈了,那紧接着就是e1可以出栈。
2、如果e3出栈,说明后边可能是e1、e2出栈。
3、如果e4出栈,说明后边可能是e1、e2、e3出栈。
以此类推
编辑于 2024-02-24 23:48:17 回复(0)