判断不可能的出栈序列

来源:互联网 发布:小智用什么软件刷点卷 编辑:程序博客网 时间:2024/05/23 01:13
对于在出栈序列中任意元素,其之后值小于该元素的元素必须是降序排列,否则序列不可能。
原因剖析如下:
1.所有元素都是从小到大顺序进栈, 所以栈顶元素一定比栈中的其他元素(如果有的话)大; 
2.根据"后进先出"的原则, 在出栈序列中, 曾经同一时刻存在于栈的元素, 值最大的栈顶元素会排在其他元素的前面; 
3.栈中的每一个元素都有机会成为栈顶元素; 
综合以上三点, 就是一个类似于降序的选择排序过程(每次都挑选最大的元素放在最前面), 使得曾经同一时刻存在于栈的元素按照降序排列, 即每一个元素后值比该元素小的元素都呈降序排列)
另注:  对于任一个元素后面的值比该元素的元素, 它们既可以是升序(进栈后立即出栈), 也可以是降序(进栈后都等待比它更大的元素进栈) , 因此不能作为判断依据.

栈序列
出栈序列(输出序列)
栈顶
栈底
1
  
1
2
1
32
1
432
1
5432
1
432
15
32
154
2
1543
 
15432
原创粉丝点击