本文共 665 字,大约阅读时间需要 2 分钟。
给定一个进栈序列,给定一个有可能的出栈序列 判断该序列有没有可能出现.
1.(如果栈为空或者栈顶的元素不等于出栈序列中要得到的元素)并且进栈的序列没有执行完并且出栈的序列也没有扫描完就进栈.
2.如果满足以上的条件就判断栈顶元素是否相等,如果相等就弹出栈顶元素并且返回1,否则该序列没有可能出现.
1 2 3 4 5 6 7//符合
7 6 5 4 3 2 1//当栈容量大于等于7时 符合,否则不符合
#include #include #include #include #include
pushStaque,popStaQue; for (int j=1; j<=N;j++) { pushStaque.push(j);//进栈的队列 1234567 scanf("%d",&tem); popStaQue.push(tem); } stack
sta; while (true) { while ((sta.empty()||sta.top()!=popStaQue.front())&&!pushStaque.empty()&&!popStaQue.empty()&&sta.size()