Ctrl+f搜关键词,搜不到找其他博客,下面肯定没有

队列

队列要实现的操作

Queue() 创建一个空的队列

is_empty() 判断一个队列是否为空

length()

push(item) 添加一个元素到队尾

pop() 弹出队头

peek() 获取队头

循环队列

# 队列 -- 链表实现class Node:def __init__(self, data, _next=None):self.data = data  # 数据域self.next = _next  # 指针域class Queue:def __init__(self, size):self.head = None  # 队列的队头self.rear = None  # 队列的队尾self._length = 0  # 队列的长度self.size = size  # 队列的最大长度def is_empty(self):return self._length == 0def length(self):return self._lengthdef push(self, item):# 判断队列是否已满if self.length() == self.size:raise ValueError('队列已满')# 添加一个元素item到队尾# 最后一个元素作为队尾node = Node(item)# 如果队列是空if self.is_empty():self.head = nodeself.rear = nodeelse:self.rear.next = nodeself.rear = nodeself._length += 1def pop(self):# 抛出队首元素if self.is_empty():raise ValueError('队列是空的')value = self.head.dataself.head = self.head.nextself._length -= 1return valuedef peek(self):if self.is_empty():raise ValueError('队列是空的')return self.head.dataif __name__ == '__main__':queue = Queue(3)queue.push(1)queue.push(2)queue.push(3)print(queue.pop())  # 1queue.push(4)print(queue.length())  # 3print(queue.peek())  # 2print(queue.pop())  # 2print(queue.pop())  # 3print(queue.pop())  # 4# print(queue.pop())

双端队列

Deque() 创建一个空的队列

is_empty() 判断一个队列是否为空

length()

push(item) 添加一个元素到队尾

push_left(item) 添加一个元素到队头

pop() 弹出队头

pop_right() 弹出队尾

peek() 获取队头

class Node:def __init__(self, data, _next=None):self.data = data  # 数据域self.next = _next  # 指针域class Deque:def __init__(self):self.head = None  # 队首self.rear = None  # 队尾self._length = 0  # 队列的长度def is_empty(self):return self._length == 0def length(self):return self._lengthdef items(self):cur = self.headwhile cur:print(cur.data, '->', end=' ')cur = cur.nextprint()def push(self, item):# 在队尾添加一个元素itemnode = Node(item)# 队列为空if self.is_empty():self.head = nodeself.rear = node# 队列不为空else:self.rear.next = nodeself.rear = nodeself._length += 1def push_left(self, item):# 在队首添加一个元素itemnode = Node(item)if self.is_empty():self.head = nodeself.rear = nodeelse:node.next = self.headself.head = nodeself._length += 1def pop(self):# 弹出队首元素if self.is_empty():raise ValueError('双端队列为空')value = self.head.dataself.head = self.head.nextself._length -= 1if self._length == 0:self.rear = Nonereturn valuedef pop_right(self):# 弹出队尾元素if self.is_empty():raise ValueError('双端队列为空')if self.length() == 1:return self.pop()cur = self.headvalue = self.rear.datawhile cur.next != self.rear:cur = cur.nextself.rear = curcur.next = Noneself._length -= 1return valuedef peek(self):if self.is_empty():raise ValueError('双端队列为空')return self.head.dataif __name__ == '__main__':deque = Deque()deque.push(1)  # 1deque.push(2)  # 1, 2deque.push_left(3)  # 3, 1, 2deque.push_left(4)  # 4, 3, 1, 2deque.items()deque.pop()deque.items()deque.pop_right()deque.items()

常用方法:

  • Queue.qsize() 返回队列的大小
  • Queue.empty() 如果队列为空,返回True,反之False
  • Queue.full() 如果队列满了,返回True,反之False,Queue.full 与 maxsize 大小对应
  • Queue.get([block[, timeout]])获取队列,timeout等待时间
  • Queue.get_nowait() 相当于Queue.get(False),非阻塞方法
  • Queue.put(item) 写入队列,timeout等待时间
  • Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号。每个get()调用得到一个任务,接下来task_done()调用告诉队列该任务已经处理完毕。
  • Queue.join() 实际上意味着等到队列为空,再执行别的操作

[python]队列操作(持续更新中)相关推荐

  1. Linux部署Python项目(持续更新中)

    项目部署 ​ 项目部署对恩操作通常是由运维人员来进行统一管理装配的,但是对于一个开发人员来讲,基础的项目部署还是要会的. ​ 这里我主要讲解python的项目是如何部署的,至于项目哪里来的,这就要看观 ...

  2. linux 查看工程用什么工具,工程师工具包-Linux常用命令及常用操作-持续更新中...

    Linux系统命令相关 系统相关 date date 查看系统时间 $date 2017年 09月 18日 星期一 18:01:06 CST date -R查看系统时间,并且在时间后面加上时区的显示 ...

  3. Python爬虫及其它函数知识读记及简单用法,持续更新中...

    Python爬虫相关函数知识读记及简单用法,持续更新中- requests [riˈkwests] n. 请求,要求( request的名词复数 ): 需要: 所请求的事物: 申请书 函数或单词- 音 ...

  4. 【Python全栈开发从入门到实战】持续更新中......

    本专栏为Python全栈开发系列文章,技术包括Python基础.函数.文件.面向对象.网络编程.并发编程.MySQL数据库.HTML.JavaScript.CSS.JQuery.bootstrap.W ...

  5. Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

    Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...) 目录 Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...) 一.Android s ...

  6. Python 100个简单小例子(持续更新中)

    Python 100个简单小例子(持续更新中) 1 编写一个计算平年还是闰年的小例子其核心是年份可以整除4和400,且不是100的倍数且2000年是特殊年份为闰年! year = int(input( ...

  7. 本专栏所有力扣题目的目录链接, 刷算法题目的顺序(由易到难/面试频率)/注意点/技巧, 以及思维导图源文件问题(持续更新中)

    这篇文章为本专栏所有力扣题目提供目录链接, 更加方便读者根据题型或面试频率进行阅读, 此外也会介绍我在刷题过程中总结的刷算法题目的顺序/注意点/技巧, 最后说下文中出现的思维导图源文件的问题 和 打卡 ...

  8. 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...

  9. 【Spring Boot官方文档原文理解翻译-持续更新中】

    [Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...

最新文章

  1. HashSet中的add()方法( 零 )(详尽版)
  2. 使用Visual Studio将Objective-C编译C++
  3. Patchwork间谍组织将目标扩大至政府
  4. php定界符EOF讲解
  5. codeforces1554 E. You(思维+数学+转化)
  6. 从Mysql slave system lock延迟说开去
  7. (1)Deep Learning之感知器
  8. #pragma pack (n) 惹的祸
  9. 一个过滤器不仅解决了会话标识未更新同时还顺带解决了已解密的登录请求
  10. 广东2022年上半年系统集成项目管理工程师下午真题及答案解析
  11. GeoServer离线地图
  12. Avalondock 第四步 边缘停靠
  13. Window同时兼容运行多版本谷歌浏览器chrome
  14. Java常用命令与参数设置
  15. matlab sil,丰田使用高精度发动机模型和SIL+M前置开发发动机控制系统
  16. C#开发工控上位机编程 csdn_C#串口编程示例
  17. 将一个自然数拆分为N个自然数
  18. 蓝侠==la*uan,破解中国共享软件联盟著名灌水专家“蓝侠””
  19. 每个公众号都需要一个社区小程序
  20. KT142A语音芯片IC的固件升级方法详细描述,PC升级和U盘升级

热门文章

  1. 计算机小知识140,140个电脑小知识,小技巧
  2. top命令查看进程信息和cpu占用
  3. C语言—数组逆序(数组移位)
  4. G1214C超低静态功耗低输入启动电压升压芯片干电池升压芯片
  5. 在6818开发板上显示bmp图片的基本步骤
  6. 【動態規劃】最大加權矩形
  7. 苹果手机IOS 禁止H5的滑动回弹
  8. matlab 微波仿真,MATLAB电磁场与微波技术仿真
  9. Android studio抓取app应用日志
  10. echarts图表y轴加文字或者单位