蒟蒻数据结构观>>出栈顺序问题

栈(stack),是一种只能在栈顶(top)上插入(push)删除(pop)的线性表。栈的特点是last in first out(后进先出),就像一个只允许单行通过的死胡同。、

出栈顺序问题

本问题无需多言,把握住LIFO原则即可。可以简单总结为在e后出栈的元素如果比e先进栈,则为逆序。这一点很好理解,在e后入栈的元素如果比e先进栈,那么它们按顺序被压在e下面某处,即使pop了,这两个元素也应该是逆序,否则为非法。

明白了这一点之后再来思考一个问题叭~
入栈顺序是1,2,3···n,出栈顺序是p1,p2···pn,若p1=3,求p2可能的取值个数。
在p1前入栈的有2个元素1和2,那么这两个元素位置关系已经确定,只可能是2,1。所以p2的值不可能取1和3,即有n-2个。
(今天上课的时候prof.C讲的有些问题,他说可能是n-2或n-3,但这样说是不对的。他思考了p2入栈顺序在p1前后两种情况,这样分析本身就过于繁琐,我们想要快速求解就不能分析什么符合情况,而要根据LIFO的原则分析剩下的n-1个元素有哪些不符合情况,毕竟理论上它们都有可能。老师的问题在于,题目稳定是可能的取值,而n-3个的所有元素是包含在n-2个中的,取并集即可)

猜你喜欢

转载自blog.csdn.net/weixin_44540329/article/details/88404294