第三次作业
编程题
- Pop Sequence 问题
- 需要维护两个数据结构,一个是队列,另一个是栈,对队列中的元素进行遍历(外层循环),内层循环是对栈进行顺序数据push,直到栈顶与
que[head]
重合,这个时候就可以stack.pop
,que.head ++
,进行下一轮遍历。 - 核心思想就是如果想让一个元素被pop,他必然是在前一步刚好被push。
- 所以我们的判据就是栈的空间是否足够
- 如果出现逆序元素,则在遍历的过程中,因为stack不能Pop,因为这样就会影响实际的输出序列,所以为了与stack pop sequence对齐,只能添加元素而不能pop元素。