在找工作做笔试题遇见过好几次类似的题目,所以通过查资料并找了其中一道题目进行记录
题目:
栈是一种先进后出的数据结构,一个序列的进栈顺序为abcde,那么不可能的出栈顺序为( C)
A. dcbae B. abcde C. adbec D. edcba
分析:栈的出栈是遵循先进后出的原则,abcde的进栈顺序并不是一次性的按照abcde入栈,也可能是先入栈一部分再出栈一部分在进行入栈,整体的入栈顺序是不变的依然是abcde。所以拿A选项分析,可以是先入栈abcd,再出栈dbca,再入栈e,再出栈e的步骤进行入栈出栈操作。所以不可能的顺序是选项C。
出栈的元素顺序可以遵守的规律如下:
- 在原序列中相对位置比它靠前的,也就是比它先入栈的,出栈顺序必须是逆序;
- 在原序列中相对位置比它大的,也就是比它后入栈的,出栈顺序没有要求;
- 以上两点可以间插进行。