(虽然我觉得没有人会看我这篇东西,但是仍然声明,如有雷同,喊我修改)
扯个蛋:出栈序列问题在数据结构课程试卷中一般会有一个1~2分的选择题,我当年做这种题的时候从来不知道选对了没有。
方法1.出栈顺序312
小模型:对于一个进栈序列123,出栈的可能序列应该是这个序列的全排列的子集()
全排列是{123}{132}{231}{213}{321}{312},不合理的出栈序列只有{312}
分析:3首先出栈,则栈中还有1和2,且1位于2下面(别在这里问为什么),此时2必定先出栈
结论:{312}的出栈序列是不可能的。
推广:对于任意一个进栈序列 1,...i,...j,...k....N,(其中 1<=i<j<k<=N),不可能产生形如 ...k...i...j...的出栈序列
换句话说,就是任意的一个出栈序列假设中,如果有3个元素,他们入栈的先后顺序是123,出栈顺序是312,那么这个出栈序列不可能。
一大堆废话,搞的跟高数一样。在数据结构考试里,一般给出5~7个元素,应该很容易就可以用肉眼找出符合312规律的序列。
方法2.过程再现
文头链接里的文章给出的是一种再现入栈/出栈过程的方法。
既