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

    栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,

    特点:

      只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。

      没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序 

    栈的实现 可以用顺序表 也可以用链表  

    顺序表的 尾部删除 和添加 的时间复杂度 O(1)

    顺序表    保序的添加 和 删除 是  O(n)

    以下用顺序表实现 栈

    • Stack() 创建一个新的空栈
    • push(item) 添加一个新的元素item到栈顶
    • pop() 弹出栈顶元素
    • peek() 返回栈顶元素
    • is_empty() 判断栈是否为空
    • size() 返回栈的元素个数
    class Stack(object):
        ''''''
        def __init__(self):
            self.items = []
    
        def is_empty(self):
            return not self.items
    
        def push(self,item):
            self.items.append(item)
    
        def pop(self):
            return self.items.pop()
    
        def peek(self):
            return self.items[len(self.items)-1]
    
        def size(self):
            return len(self.items)
    
    if __name__ == "__main__":
        stack = Stack()
        stack.push("hello")
        stack.push("world")
        stack.push("itcast")
        print (stack.size())
        print (stack.peek())
        print (stack.pop())
        print (stack.pop())
        print (stack.pop())

  • 相关阅读:
    主键索引和非主键索引解析
    DNS劫持、污染的原理
    B-树,B+树与B*树的优缺点比较
    CollectionUtils工具类
    maven换源
    哪些字段可以加索引?
    callable和runnable的区别
    类加载器实例化时的顺序
    28BYJ-48步进电机
    《计算机网络》读书笔记之应用层
  • 原文地址:https://www.cnblogs.com/devlost/p/9551764.html
Copyright © 2011-2022 走看看