问题描述:对于一个进栈序列其出栈序列存在多种合法的可能情况。例如:入栈序列为1,2,3,4,5时,而对于出栈序列5,4,3,2,1、1,3,2,5,4、3,5,4,2,1等等这些都是一个合法的出栈序列,但是对于3,5,2,4,1、5,3,4,2,1等这种出栈序列则是非法的序列,因为其违背了栈的特性(先进后出或者后进先出)。
★对于1,2,3,4,5这样的进栈序列,我们最常想到的出栈序列为5,4,3,2,1。这是因为将其一次性逐个入栈,然后逐个弹出得到的出栈序列。然而在这里我们并未规定所有元素入栈后才相继弹出,所以这里的序列就很多很多了。
比如:以上述一个合法的出栈序列1,3,2,5,4为例: 再比如:以上述一个非法的出栈序列3,5,2,4,1为例:
①栈为空,元素1入栈,然后弹出。 ①栈为空,元素1,2,3入栈,元素3弹出(此时栈内保留压入元素1,2)。
②元素2,3入栈,元素3,2分别弹出。