数据结构----栈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())

  

原文地址:https://www.cnblogs.com/open-yang/p/11366985.html