判断不可能的出栈序列

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Maple1997/article/details/78066022
对于在出栈序列中任意元素,其之后值小于该元素的元素必须是降序排列,否则序列不可能。
原因剖析如下:
1.所有元素都是从小到大顺序进栈, 所以栈顶元素一定比栈中的其他元素(如果有的话)大; 
2.根据"后进先出"的原则, 在出栈序列中, 曾经同一时刻存在于栈的元素, 值最大的栈顶元素会排在其他元素的前面; 
3.栈中的每一个元素都有机会成为栈顶元素; 
综合以上三点, 就是一个类似于降序的选择排序过程(每次都挑选最大的元素放在最前面), 使得曾经同一时刻存在于栈的元素按照降序排列, 即每一个元素后值比该元素小的元素都呈降序排列)
另注:  对于任一个元素后面的值比该元素的元素, 它们既可以是升序(进栈后立即出栈), 也可以是降序(进栈后都等待比它更大的元素进栈) , 因此不能作为判断依据.

栈序列
出栈序列(输出序列)
栈顶
栈底
1
 
 
1
2
1
32
1
432
1
5432
1
432
15
32
154
2
1543
 
15432
展开阅读全文

没有更多推荐了,返回首页