栈与队列
时间:2019-12-13
本文章向大家介绍栈与队列,主要包括栈与队列使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1,堆栈结构
后进先出的队列
栈结构:其实就是一个后进先出的一个线性表,只能在栈顶压入或弹出元素
import queue.LifoQueue() q = queue.LifoQueue() q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) 结果 third second first
如何用列表实现栈
lis = [] lis.append('a') #压入元素‘a' lis.append('b') #压入元素'b' lis = ['a','b'] lis.pop() #弹出元素'b' lis.pop() #弹出元素'a' ################################### >>> x=[] #创建一个空列表,此处表示栈 >>> x [] >>> x.append('a') #压入元素'a' >>> x ['a'] >>> x.append('b') #压入元素'b' >>> x ['a', 'b'] >>> x.pop() #弹出栈顶元素'b' 'b' >>> x ['a'] >>> x.pop() #弹出栈顶元素'a' 'a' >>> x [] >>> x.pop() #试图对一个空栈做弹出操作,会报异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop from empty list
2,队列
队列,类似于栈
队列,其实就是一个先进先出的线性表,只能在队首执行删除操作,在队尾执行插入操作,用列表表示队列,可以用append()方法实现队尾插入元素,用pop(0)方法实现在队首删除元素
>>> x=[] >>> x.append('a') >>> x ['a'] >>> x.append('b') >>> x ['a', 'b'] >>> x.pop(0) 'a' >>> x.pop(0) 'b' >>> x.pop(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop from empty list
3,优先级队列
q = queue.PriorityQueue()
put进入一个元组,元组的第一个元素是优先级,通常是数字,也可以是非数字之间的比较,数字越小,优先级越高,负数也可以
如果两个值的优先级一样,那么按照后面的数据的ASCII码顺序来排序
q = queue.PriorityQueue() q.put((1, "david")) q.put((3, "world")) q.put((2, "hello")) print(q.get()) print(q.get()) print(q.get()) ######################## (1, 'david') (2, 'hello') (3, 'world')
这三种队列都是安全的,不会出现多个线程抢占同一个资源的情况
原文地址:https://www.cnblogs.com/daviddd/p/12034442.html
- .Net魔法堂:AssemblyInfo.cs文件详解
- 本地php环境不支持curl_exec的解决办法
- JAVA魔法堂:读取.properties配置文件
- Python深入04 闭包
- PHP获取时间戳的毫秒
- Python深入03 对象的属性
- CSS魔法堂:Position定位详解
- EMLOG无插件实现网站源码压缩
- CSS魔法堂:盒子模型简介
- 协议森林06 瑞士军刀 (ICMP协议)
- Emlog博客系统IIS 7/8伪静态
- Weblogic魔法堂:AdminServer.lok被锁导致启动、关闭域失败
- CentOS6.5菜鸟之旅:安装VirtualBox4.3
- CentOS6.5菜鸟之旅:VirtualBox4.3识别USB设备
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Typecho Markdown编辑器粘贴剪贴板图片插件:PasteImage
- SpringBoot源码学习(二)
- 【React+Typescript+Antd】Echarts滑动卡顿问题解决
- 13个超实用的JavaScript数组操作技巧
- 【React+Typescript+Antd】图表——Echarts
- 【React+Typescript+Antd】页面内局部路由跳转
- 第1天:网易2018年校园招聘NLP算法工程师笔试试卷分析
- 【React+Typescript+Antd】全局路由跳转
- 【React+Typescript+Antd】防止样式感染——LESS CSS 框架简介
- 【React+Typescript+Antd】界面框架布局——Layout布局+ Grid栅格
- SpringBoot源码学习(三)
- Axure RP 9 安装与中文汉化
- Linux 离线安装docker的过程
- Mac环境变量设置(以ADB为例)
- Linux 基础之定时任务