本文以实例形式展示了Python算法中栈(stack)的实现,对于学习数据结构域算法有一定的参考借鉴价值。具体内容如下:
1.栈stack通常的操作:
Stack() 建立一个空的栈对象
push() 把一个元素添加到栈的最顶层
pop() 删除栈最顶层的元素,并返回这个元素
peek() 返回最顶层的元素,并不删除它
isEmpty() 判断栈是否为空
size() 返回栈中元素的个数
2.以 PAT的Pop Sequence为例,原题位于
http://pat.zju.edu.cn/contests/pat-a-practise/1051
分析:根据给定的pop序列, 还原push 和 pop的过程, 因为一个pop sequence 只能对应一个唯一的push pop的操作过程, 所以到最后能还原那么这个pop sequence是可行的, 否则不可能, 比如: 3, 2, 1, 7, 5, 6, 4. 这个序列, 那么我们看第一个3, 要pop出3, 那么肯定要先push 1, push 2, push 3, pop 3, 接下来看2, 此时栈顶确实是2那么 pop 2, 接下来1类似, 好了下面一个是7, 那么我们必须要先push 4, push 5, push 6, push 7, 然后pop 7可以得到一个7, 接下来需要5,但是此时栈顶元素是6, 所以这个sequence就是不可能了。 这样的算法基本上是一个线性算法。