Python 的算法和数据结构—栈

作者: 起个什么呢称呢 | 来源:发表于2017-04-09 14:41 被阅读146次

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

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

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

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

    stack的通常操作

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

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

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

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

    isEmpty()  : 判断栈是否为空

    size() : 返回栈中的元素

    模拟stack 主函数执行

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

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

    上图了

    匹配‘(’

    栈的应用进制转换


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

    十进制转换二进制   ----- 除二取余法

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

    除二取余

    Python代码

    divideby代码块
    反序代码块 是调用内置函数。这个代码是在com.python.Stack中写的 不在同一代码块中,但也可以写在同一代码块中
    结果 1x2^5+0x2^4+1x2^3+0x2^2+1x2^1+0X2^0=42

    相关文章

      网友评论

        本文标题:Python 的算法和数据结构—栈

        本文链接:https://www.haomeiwen.com/subject/gkcrattx.html