1.给出区分给定的“栈操作”序列是否合法的准则,并证明两个不同的合法序列不可能得到相同的输出元素序列。
分析:
准则:
(1)从操作序列中第一个字符起的任何一个子序列中,‘s'的个数不少于’x‘的个数。(s入栈,x出栈)。
(2)为保证从空栈到空栈,所以整个序列中,'s'的个数和'x'的个数相同。
证明:
(反证法)假设两个不同的合法操作序列:
可以得到相同的输出元素序列。
一般性,假设第一个不同的操作为:
则此时已输出的元素序列相同,栈的状态也相同,且栈中至少存在一个元素(为了满足合法操作序列的条件,使出栈操作合法)
所以假设栈顶元素为a,正待输入的元素为b,根据LIFO的原则:<