Python 的算法和数据结构—栈

    本来打算是从C语言的数据结构学起的,但是由于对C语言遗忘过多,于是作罢,开始转向Python 数据结构算法了。而且在未来大数据处理中,Python语言会展现得天独厚优势呢——独白

栈【stack】: 是数据结构的一种,若是对栈中的元素访问,必须从栈顶开始,是一种后进先出的数据结构。所以,任何不在栈顶的元素都无法访问,为了得到栈底元素,必须着个拿掉栈顶元素

在python 中对栈的操作有两个 压栈(push)和弹栈(pop)这两个都是Python中的内置函数pop()还有一个常见的操作是预览栈顶元素。peek() 方法只能返回栈顶原素,而不能删除它。

为了记录栈顶元素的位置,同时为了标记哪里可以加入新元素。。我们使用top,当向栈内压入元素,该变量增大,弹出元素,变量减小。

stack的通常操作

Stack(): 建立一个空的栈对象

push() :把一个元素添加到栈顶

pop(): 删除最顶层,并返回这个元素

peek() : 返回最顶层,但不删除它

isEmpty()  : 判断栈是否为空

size() : 返回栈中的元素

《Python 的算法和数据结构—栈》 模拟stack

《Python 的算法和数据结构—栈》 主函数执行

eg 1: 栈的应用之平衡圆括号

比如我们在计算机输入(9+1)X(2+8)/(3+7)

《Python 的算法和数据结构—栈》 上图了

《Python 的算法和数据结构—栈》

《Python 的算法和数据结构—栈》

《Python 的算法和数据结构—栈》 匹配‘(’

栈的应用进制转换

在计算机中进制之间的转换从未停止,大都是十进制1二进制之间的转换

十进制转换二进制   —– 除二取余法

这种算法从一个大于 0 的整数开始,通过递归法连续除以 2,并保存除 2 得到的余数。第一次除以 2 可以判断这个数是偶数还是奇数。偶数除以 2 的余数是 0,这个二进制位就 0;奇数除以 2 的余数是 1,这个位就是 1。这样连续相除得到一串的 0 或 1,第 1 次得到的位实际是最后一位。如图 5 所示,我们又一次见到了需要反转顺序的性质,这就表明需要利用栈的特性来解决问题了。

《Python 的算法和数据结构—栈》 除二取余

Python代码

《Python 的算法和数据结构—栈》 divideby代码块

《Python 的算法和数据结构—栈》 反序代码块 是调用内置函数。这个代码是在com.python.Stack中写的 不在同一代码块中,但也可以写在同一代码块中

《Python 的算法和数据结构—栈》 结果 1×2^5+0x2^4+1×2^3+0x2^2+1×2^1+0X2^0=42

    原文作者:起个什么呢称呢
    原文地址: https://www.jianshu.com/p/57983c9ab350#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞