栈和队列

栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。

由于栈数据结构只能在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

栈结构的实现

'''
栈的操作
Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数
'''class Stack(object):def __init__(self):self.items = []def is_empty(self):'''判断栈是否为空'''return len(self.items) == 0def 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__':s = Stack()s.push(1)print(s.is_empty())print(s.pop())

队列

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。

队列的实现

'''
队列的操作
Queue() 创建一个空的队列
enqueue(item) 往队列中添加一个item元素
dequeue() 从队列头部删除一个元素
is_empty() 判断一个队列是否为空
size() 返回队列的大小
'''class Queue(object):def __init__(self):self.items = []def enqueue(self, item):'''往队列中添加一个item 元素'''self.items.insert(0, item)def dequeue(self):'''从队列头部删除一个元素'''return self.items.pop()def is_empty(self):'''判断一个队列是否为空'''return len(self.items) == 0def size(self):'''返回队列的大小'''return len(self.items)

Python数据结构与算法(六)--栈和队列相关推荐

  1. python数据结构和算法3 栈、队列和排序

    顺序表和链表都是线性表,线性数据 栈 stack,也叫堆栈,是一种容器,可存入元素.访问元素.删除元素,特点是只允许在容器的一端(栈顶,top)进行加入数据(压栈,push)和输出数据(pop),按照 ...

  2. 数据结构与算法--利用栈实现队列

    利用栈实现队列 上一节中说明了栈的特点 后进先出,我们用数组的方式实现了栈的基本操作api,因此我们对栈的操作是不考虑排序的,每个api的操作基本都是O(1)的世界,因为不考虑顺序,所以找最大,最小值 ...

  3. 数据结构与算法(2)——栈和队列

    前言:题图无关,只是好看,接下来就来复习一下栈和队列的相关知识 前序文章: 数据结构与算法(1)--数组与链表(https://www.jianshu.com/p/7b93b3570875) 栈 什么 ...

  4. 【数据结构与算法】栈与队列

    栈 一.什么是栈? 1.后进者先出,先进者后出,这就是典型的"栈"结构. 2.从栈的操作特性来看,是一种"操作受限"的线性表,只允许在端插入和删除数据. 二.为 ...

  5. 数据结构与算法之栈与队列:java实现

    闻理似悟,遇境则迷!!! 栈与队列来说也算是一种特殊的线性表,栈的特点是后进先出,队列的特点是先进先出. 栈 栈的特点是后进先出,栈的操作只有出栈和入栈(也叫压栈),除此之外,还包含栈顶与栈底的指向以 ...

  6. 【数据结构与算法】栈与队列【C语言版】

    目录 3.1 栈和队列的定义和特点 3.2 栈.队列与一般线性表的区别 3.3 栈的表示和操作的实现 顺序栈与顺序表 ================= 顺序栈的表示 顺序栈初始化 判断顺序栈是否为空 ...

  7. 用JS描述的数据结构及算法表示——栈和队列(基础版)

    前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...

  8. 数据结构与算法(二) 栈与队列(代码示例)

    数据结构与算法 栈与队列 1. 数组和链表实现栈 2. 用O(1)的时间复杂度求栈中的最小元素 3. 链表和数组实现队列 4. 用两个栈模拟队列操作 1. 数组和链表实现栈 链表的方式: /*** 描 ...

  9. 数据结构与算法 | 用栈实现队列

    之前的几章我讲解了栈和队列的基本特性和一些基本的操作方法,那么如何能利用栈来实现队列呢? 下面我来讲解下具体思路,栈的特性先进后出,队列是先进先出,如果要模拟队列的这个特性,我们就必须用到两个栈. 一 ...

最新文章

  1. R 绘制 GWAS 研究的 Manhattan 图
  2. java filter 返回错误消息_java filter 导致错误310
  3. html5能实现网络游戏吗,kbengine + cocos2d_js实现html5网络游戏mmorpg(全套代码+资源)...
  4. 一个关于if else容易迷惑的问题(转自鸟哥公众号)
  5. 后缀自动机概念的温习
  6. Python语言学习系列------基础语法(一)
  7. 程序设计语言与语言程序处理程序基础(软件设计师备考笔记)
  8. SCT芯洲DC-DC-SCT2430是一款输出电流高达3.5A的高功率密度全集成同步降压DCDC转换器。其输入电压范围为3.8V到40V,替代TPS54340
  9. 137、TensorFlow使用TextCNN进行文本分类
  10. 鱼塘钓鱼(fishing)
  11. python改变当前工作目录_在python中更改当前工作目录
  12. 对话微软大中华区CEO梁念坚:WP7为云而生
  13. 为什么PPIO要设计支付代理节点?
  14. Windows下用戶無法寫入和讀取
  15. 位置定位LocationManager
  16. 多任务学习时转角遇到Bandit老虎机
  17. M1芯片真正原生版本photoshop 2021安装 PS2021 Mac版 附详细教程!再无需rosetta转译!!
  18. DB2-HPU(Optim High Performance Unload)简叙及安装使用
  19. 傅里叶级数展开的详细推导和部分证明
  20. python和matlab读取SST数据(海洋的温度)(.nc文件)并绘图

热门文章

  1. hive安装mysql驱动_Hadoop-2.6.0为基础的Hive安装
  2. [转载] python学习笔记2--操作符,数据类型和内置功能
  3. sheets.add示例_Java ArrayDeque add()方法与示例
  4. julia 数组类型转换_在Julia中确定类型的超类型
  5. shell中返回值是1为真还是假_shell脚本中判断上一个命令是否执行成功
  6. java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...
  7. oracle中dbms_DBMS中的实例和架构
  8. 循环语句与条件语句_在PHP中混合条件语句和循环
  9. 软件测试 测试策略_测试策略| 软件工程
  10. 小心Lombok用法中的坑