zoukankan      html  css  js  c++  java
  • Python数据结构———栈

    线性数据结构

      当添加一个项目时,它就被放在这样一个位置:在之前存在的项与后来要加入的项之间。像这样的数据集合常被称为线性数据结构。

      栈是一个项的有序集合。添加项和移除项都发生在同一“端”,这一端通常称为“栈顶”,另一端的顶部被称为“栈底”。通俗易懂的理解就是一堆盘子堆在一起,想要继续堆上去就得往上面叠,同理,想要移除盘子也要从最上面那个开始。因此,,栈被称为一种后入先出(LIFO,last -in-first-out)的数据结构。

      由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问,为了得到栈底的元素,必须先拿掉上面的元素。

      对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用push()方法,出栈使用pop()方法,另一个常用的方法peek()返回栈的顶,不删除它。栈的操作如下:

          Stack()创建一个新的空栈。它不需要参数,并返回一个空栈

          push(item)将新项添加到堆栈的顶部。它需要参数item并且没有返回值
          pop(item)从栈顶删除项目,它不需要参数,返回item,栈被修改
          peek()返回栈顶的项,不删除它。它不需要参数,栈顶不被修改
          isEmpty()测试看栈是否为空,它不需要参数,返回一个布尔值
          size()返回栈的项目数,它不需要参数,返回一个整数

    用python的列表对象模拟栈:

    class Stack:
        '''模拟栈'''
        def __init__(self):
            self.items = []
    
        def isEmpty(self):
            return len(self.items) ==0
    
        def push(self,item):
            self.items.append(item)
    
        def pop(self):
            return self.items.pop()
    
        def peek(self):
            if not self.isEmpty():
                return self.items[len(self.items)-1]
    
        def size(self):
            return len(self.items)
    >>> s = Stack()
    >>> print(s.isEmpty())
    True
    >>> s.push(4)
    >>> s.push('dog')
    >>> print(s.peek())
    dog
    >>> s.push(True)
    >>> print(s.isEmpty())
    False
    >>> s.push(8.4)
    >>> print(s.pop())
    8.4
    >>> print(s.pop())
    True
    >>> print(s.size())
    2

      

    人生苦短,何不用python
  • 相关阅读:
    Vue Scroller:Vue 下拉刷新及无限加载组件
    vue引用公用的头部和尾部文件。
    Java后期拓展(三)Nginx ——高性能的HTTP和反向代理服务器
    JAVA后期拓展(二)ZooKeeper——分布式应用程序协调服务系统
    Java高级部分
    Java后期拓展(一)非关系型数据库Redis
    LoadRunner(四)——深度了解LR相关功能
    LoadRunner(三)——LR相关概念&组成部分
    LoadRunner(二)——性能测试过程概述
    LoadRunner(一)——性能测试基础及性能指标概述
  • 原文地址:https://www.cnblogs.com/yqpy/p/8579653.html
Copyright © 2011-2022 走看看