python队列用什么表示(Python列表数据类型什么是栈什么是队列)

栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。就像咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。栈的基本操作有push()和pop()、peek()。所以栈又被称为LIFO表。堆与栈是C/C 语言内存管理和编译优化时使用的,在Python里,递归层次太多,要改用堆栈,而不能用递归。

由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。

入栈使用push()方法

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(1)

入栈和出栈的过程

预览栈顶的元素
  1. pop()方法虽然可以访问栈顶的元素,但是调用该方法后,栈顶元素也从栈中被永久性地删除了。

  2. peek()方法则只返回栈顶元素,而不删除它。

为了记录栈顶元素的位置,同时也为了标记哪里可以加入新元素,我们使用变量top,当向栈内压入元素时,该变量增大;从栈内弹出元素时,该变量减小。

简单案例以及操作结果:

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(2)

这里使用python的list对象模拟栈的实现:

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(3)

栈应用

  • 检查程序中成对的符号

用栈来检查符号是否成对。做一个空栈,如果字符是开放符号('({[')则将其push栈中。如果符号是个闭合符号(')]}'),则当栈空时报错,对应'()}'的错误。否则,将栈pop,如果弹出的符号不是对应的开放符号,则报错,对应'(}'的错误。文件末尾,如果栈为空,则报错,对应'({}'的错误。

  • 进制转换

十进制转换二进制:把十进制转成二进制一直分解至商数为0。从最底左边数字开始读,之后读右边的数字,从下读到上。

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(4)

  • 后缀记法

使用一个栈,见到一个数时入栈,遇到一个运算符时就作用于从栈弹出的两个元素,将结果弹入栈中。中缀到后缀的转换:当读到一个操作数的时候,放到输出中。读到操作符( ,-,*,/)时,如果栈为空,则压入栈中,否则弹出栈元素放到输出中直到发现优先级更低的元素为止。读到'(',压入栈中,读到')',弹出栈元素并发到输出中直到发现'('为止。

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(5)

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(6)

队列

队列其实就是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样。

PS:说一下在Python2.X的版本中队列模块是queue,而Python3.X中的队列模块是queue,所以导入模块的时候请注意自己的Python环境

  • 一个线性的数据结构

  • 队列遵循FIFO的原则

  • 队列头部为front,尾部为rear

队列操作举例

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(7)

先进先出队列(FIFO)

class queue.Queue(maxsize=0)

Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(8)

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(9)

后进先出队列(LIFO)

class queue.LifoQueue(maxsize=0)

后进先出队列与栈的类似,使用也很简单

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(10)

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(11)

queue常用方法

python队列用什么表示(Python列表数据类型什么是栈什么是队列)(12)

讲到这里其实还有一种优先队列,小编留一个悬念,希望时刻关注小编,定期更新,点关注不迷路

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页