栈stack

Posted open-yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈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())

 

  

以上是关于栈stack的主要内容,如果未能解决你的问题,请参考以下文章

STL详解—— stack和queue的介绍及使用

每日一题 为了工作 2020 0303 第一题

剑指offer(15)

C++stack&queue(栈队列优先级队列)

C++stack&queue(栈队列优先级队列)

C++stack&queue(栈队列优先级队列)