当前位置: 首页 > news >正文

【数据结构与算法】5_python版 _队列

文章目录

  • 一、什么是队列
  • 二、 队列
    • 2.1 队列实现
    • 2.2 队列的操作
    • 2.3 队列代码的(顺序表)实现
  • 三、双端队列
    • 3.1 双端队列的操作
    • 3.2 双端队列代码的(顺序表)实现

一、什么是队列

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

队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!

假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,总是在队列最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然排在队伍最后。

二、 队列

2.1 队列实现

同栈一样,队列也可以用顺序表或者链表实现。

2.2 队列的操作

  • Queue() 创建一个空的队列
  • enqueue(item) 往队列中添加一个item元素
  • dequeue() 从队列头部删除一个元素
  • is_empty() 判断一个队列是否为空
  • size() 返回队列的大小

2.3 队列代码的(顺序表)实现

# 队列classQueue:def__init__(self):self.__list=[]defenqueue(self,item):# 往队列里添加一个item元素self.__list.append(item)# 1.尾部添加# self.__list.insert(0, item)# 2.头部添加defdequeue(self):# 从队列头部删除一个元素returnself.__list.pop(0)# 1.头部弹出# return self.__list.pop()# 2.尾部弹出defis_empty(self):# 判断一个队列是否为空returnself.__list==[]defsize(self):# 返回队列大小returnlen(self.__list)if__name__=='__main__':q=Queue()q.enqueue(1)q.enqueue(2)q.enqueue(3)q.enqueue(4)print(q.dequeue())# 1print(q.dequeue())# 2print(q.dequeue())# 3print(q.dequeue())# 4

三、双端队列

双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。

双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。

3.1 双端队列的操作

  • Deque() 创建一个空的双端队列
  • add_front(item) 从队头加入一个item元素
  • add_rear(item) 从队尾加入一个item元素
  • remove_front() 从队头删除一个item元素
  • remove_rear() 从队尾删除一个item元素
  • is_empty() 判断双端队列是否为空
  • size() 返回队列的大小

3.2 双端队列代码的(顺序表)实现

# 双端队列classDeque:def__init__(self):self.__list=[]defadd_front(self,item):# 头部添加self.__list.insert(0,item)defadd_rear(self,item):# 尾部添加self.__list.append(item)defpop_front(self):# 队列头部删除一个元素,弹出returnself.__list.pop(0)defpop_rear(self):# 尾部删除弹出returnself.__list.pop()defis_empty(self):# 判空returnself.__list==[]defsize(self):# 返回队列长度returnlen(self.__list)if__name__=='__main__':d=Deque()d.add_front(1)d.add_front(2)d.add_rear(3)d.add_rear(4)print(d.pop_front())# 2print(d.pop_front())# 1print(d.pop_rear())# 4print(d.pop_rear())# 3
http://www.jsqmd.com/news/491588/

相关文章:

  • 国内主流的 龙虾 OpenClaw(AI 执行引擎/智能体)产品以及官网信息
  • 2026年便携式地下水位监测仪厂家排名与推荐 - WHSENSORS
  • openclaw-飞书正式版插件 部署攻略 windows
  • C# winform部署SAM2的onnx模型
  • 二十、Kubernetes基础-8-kubeadm-kubernetes-deployment-guide-04-networking
  • day01_基于Ollama+chatbox本地部署个模型玩玩
  • 应用层网络安全核心指南:从 HTTP 到 HTTPS 筑牢加密防护防线
  • 【征稿通知 | IEEE出版】第八届信息科学、电气与自动化工程国际学术会议(ISEAE 2026)
  • Doris的集群搭建(3FE+3BE)
  • 商业综合体消防改造防火卷帘门质量评测报告 - 优质品牌商家
  • L2-042 老板的作息表
  • VHD虚拟门禁:Windows新增设备配置指南
  • C语言100篇:从入门到天花板 第18篇 局部变量与全局变量:生命周期与访问规则
  • 【面试专栏|Java并发编程】为什么多线程读多写少场景,优先选CopyOnWriteArrayList?原理详解
  • 2026年足疗采耳加盟品牌专业选型指南:博足堂自主品牌加盟深度解析(足疗/采耳/按摩/修脚招商加盟) - 品牌推荐官
  • Django 学习 Part 3: 视图与模板系统
  • Web开发转Agent?3个顶尖大厂Offer经验分享,手把手教你学大模型开发!
  • 2026年浙江建筑资质延期/建筑资质咨询/建筑资质代办/建筑资质动态核查/建筑资质吸收合并/建筑资质转让/建筑资质升级服务商推荐:杭州瑞诚教育科技有限公司 - 2026年企业推荐榜
  • 厨房插座留几个够用?位置错了用起来闹心
  • 术野摄像机在手术影像系统中的位置与系统架构分析
  • 哈希表:链地址法和开放定址法
  • LeetCode1272:重新排列后的最大子矩阵
  • Git急救指南:误操作全拯救
  • 程序员与机器的四十年对话史
  • Python函数进阶:别再混淆return None了!从参数传递到递归实战,一文彻底搞懂(附个人理解)
  • 二、类、对象、类成员
  • 医院AI建设爆款:400万打造多模态大模型,解决医疗行业两大难题!
  • 中南大学计算机考研机试真题(含25年最新)
  • 【第三周】RAG与Agent实战24:CSVLoader的使用 —— 结构化数据加载入门
  • 降AI率工具技术原理对比:双引擎vs Pallas引擎vs DeepHelix