栈的合法输出序列
最近写栈的实验题,附加题中涉及合法输出序列。
<1>假设栈的输入序列为1、2、3、…、n,设计算法实现对给定的一个序列,判定其是否是此栈合法的输出序列。
<2>假设栈的输入序列为1、2、3、…、n,设计算法求出所有可能的出栈序列。
第一问在网上可以找到规律——判断出栈序列是否合法
它的规律在于出栈序列中,元素i之后所有比i小的元素间必须是降序排列的,元素i从头向后遍历。
因此在判断是,需要引入两个循环和一个变量表示最小值,然后依次进行比较。
bool StackArray::JudgeMatchedStackArray(int a[],int len)
{
int low=0;//表示一遍遍历中的最小值
for(int i=0;i<len;++i)//元素i从头向后依次遍历