• 数据结构----栈stack


    栈的概念与数据结构

      栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。栈的底部很重要,因为在栈中靠近底部的元素是存储时间最长的。最近添加的元素是最先会被移除的。这种排序原则有时被称为 LIFO,后进先出。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。  

    栈的抽象数据类型定义:栈的抽象数据类型应该由以下结构和操作定义。栈操作如下:
    • Stack() 创建一个空的新栈。 它不需要参数,并返回一个空栈。
    • push(item)将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
    • pop() 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
    • peek() 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
    • isEmpty() 测试栈是否为空。不需要参数,并返回布尔值。
    • size() 返回栈中的 item 数量。不需要参数,并返回一个整数。

    栈的定义  

     1 class Stack(object):
     2     def __init__(self):
     3         self.stack = []
     4 
     5     def __str__(self):
     6         return str(self.stack)
     7 
     8     def push(self, item):
     9         self.stack.append(item)
    10 
    11     def pop(self):
    12         return self.stack.pop() if self.stack else "Stack is empty!"
    13 
    14     def peek(self):
    15         return len(self.stack) - 1
    16 
    17     def isEmpty(self):
    18         return self.stack == []
    19 
    20     def size(self):
    21         return len(self.stack)

    栈的使用  

     1 s=Stack()
     2 print(s.isEmpty())
     3 s.push(4)
     4 s.push('dog')
     5 print(s.peek())
     6 s.push(True)
     7 print(s.size())
     8 print(s.isEmpty())
     9 s.push(8.4)
    10 print(s.pop())
    11 print(s.pop())
    12 print(s.size())

      

  • 相关阅读:
    在C#中实现高性能计时[转]
    序列化(Serializable)的学习
    日常常用英语
    使用javascript灵活控制DIV的位置
    酷我创始人雷鸣:程序员个人成长的四个要素
    String.Format格式说明
    各种类型转换的比较
    学好计算机英语
    AS关键字进行类型转化的优点以及限制
    Spoken English美国人常用的英语口语
  • 原文地址:https://www.cnblogs.com/open-yang/p/11366985.html
Copyright © 2020-2023  润新知