回 帖 发 新 帖 刷新版面

主题:初学<数据结构>,堆栈题不懂??????

选择题:
一个栈的入栈序列是a,b,c,d,e; 则栈的不可能的输出序列是( ).
a,edcba        b.decba        c.dceab      d.abcde

书上答案是c
但是我不懂出栈序列b,d为什么也是正确的啊?????
谁能帮解释下,小弟万分感谢!!

回复列表 (共18个回复)

11 楼

入栈不一定一次性入 可以按顺序先入一部分 所以正确答案应该是C

12 楼

c 中a在b下面要等到b先出a才能出

13 楼


遵循先进后出原则,真要不行拿着实物比划一下就明白了

14 楼

这样的题目还是比较好做的,好好想想。

15 楼

B:decba
其操作是这样:1、cba已经进栈;
              2、d进栈、再立即出栈----〉所以d就是第一个出栈的;
              3、此时栈里面的还是只有cba;e入栈,再立即出--〉所以e是第二个
                 出栈的,此时栈里面依然只有cba;
              4、c、b、a在分别出栈。

16 楼

好简单的题目,终于懂了。。。

17 楼


堆栈是先进后出哟,有abcdef序列
可以先让a进,然后又让a出,再进b哟,别的都是一样的道理,如果第一个出的是d,那表示一次性把abcd都进了

18 楼


你没明白题意,题里不是要求全部都入栈,可以只有部分入栈。
a:全入,然后逐个弹出
b:abc入栈,d直接输出,e可入可不入,不入就直接输出,然后把堆栈里的数弹出来,入栈的话一样
c:要保证d首先输出,那么abc全都要入栈,这样,它出栈的顺序应该是cba,而题里是cab,所以错了
d:全都不入栈,直接输出

我来回复

您尚未登录,请登录后再回复。点此登录或注册