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
  • 相关阅读:
    GridView跨列
    html的积累
    什么是json?
    关于string
    Effective C# Item38:定制和支持数据绑定
    Effective C# Item44:为应用程序创建特定的异常类
    Effective C# Item42:利用特性简化反射
    Effective C# Item47:选择安全代码
    Effective C# Item43 : 避免过度使用反射
    Effective C# Item39 : 使用.NET验证
  • 原文地址:https://www.cnblogs.com/yqpy/p/8579653.html
Copyright © 2011-2022 走看看