一、双端队列的特点:

可以对两端进行操作:队尾入队,队首出队;队尾出队,队首入队;

二、双端队列要实现的操作:

三、代码块(链表实现)

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)cur=cur.nextprint()def push(self,item):#队尾添加一个元素item#队列为空node=Node(item)if self.is_empty():self.head=nodeself.rear=node# 队列不为空else:self.rear.next=nodeself.rear=nodeself._length+=1def push_left(self,item):#再队首添加一个节点node=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()  # 3,1,2deque.pop_right()  # 3,1deque.items()

【python】数据结构与算法—双端队列(二)相关推荐

  1. 【python】数据结构与算法—双端队列(一)

    一.双端队列的特点: 可以对两端进行操作:队尾入队,队首出队:队尾出队,队首入队: 二.双端队列要实现的操作: 三.代码块(顺序表实现): class Deque:def __init__(self) ...

  2. 经典数据结构和算法 双端队列 java

    选一个简单的数据结构聊一聊,话说有很多数据结构都在玩组合拳,比如说:块状链表,块状数组,当然还有本篇的双端队列,是的,它就是 栈和队列的组合体. 一:概念 我们知道普通队列是限制级的一端进,另一端出的 ...

  3. python数据结构与算法——栈、队列与双端队列

    栈 栈:是一种容器,可存入数据元素.访问元素.删除元素,它的特点在于只能允许在容器的一端进行加入数据和输出数据的运算.没有了位置概念,保证任何时候可以访问.删除的元素都是此前最后存入的那个元素,确定了 ...

  4. python 判断div 之间的内容是否为空_python实现数据结构与算法之双端队列实现

    简介 双端队列(deque, double-ended queue),是一种具有队列和栈的性质的数据结构.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行.双端队列可以在队列任意一端 ...

  5. Python实现双端队列

    Python实现双端队列 关于双端队列的介绍,请参考:https://blog.csdn.net/weixin_43790276/article/details/104033337 双端队列的数据存储 ...

  6. python deque双端队列的神奇用法

    python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...

  7. python 熊猫钓鱼_Python数据结构与算法之使用队列解决小猫钓鱼问题

    本文实例讲述了Python数据结构与算法之使用队列解决小猫钓鱼问题.分享给大家供大家参考,具体如下: 按照<啊哈>里的思路实现这道题目,但是和结果不一样,我自己用一幅牌试了一下,发现是我的 ...

  8. Proj1a 数据结构:双端队列| CS61B-Spring-2018

    主要任务 编写双端队列,能够addFirst, remove First, addLast, removeLast.并实现其他一些辅助功能. 使用两种数据结构来完成双端队列,分别是链表和数组. 要求这 ...

  9. Python 数据结构与算法 —— list与deque(双端队列)

    TimeComplexity - Python Wiki 1. 底层数据结构 list 的底层是数组(array),其最大的时间空间消耗出现在存储元素增长超过当前数组分配的大小时,所有元素都必须移动到 ...

最新文章

  1. VC++关于UNICODE版本的开发
  2. 解决“安装程序无法定位现有系统分区,也无法创建新的系统分区”的方法
  3. JCIFS实现单点登录
  4. C# 移动鼠标方法
  5. Win64 驱动内核编程-19.HOOK-SSDT
  6. Java中的Runtime类详解
  7. 「权威发布」2019年大学生电子设计竞赛获奖名单
  8. vue --- 购物车页面
  9. 4、容器虚拟化网络概述
  10. 开源软件使用_亲爱的父母:让您的孩子使用开源软件
  11. java 零配置_Spring零配置之@Configuration注解详解
  12. Java实现求阶乘和的三种方法
  13. 正点原子STM32F429阿波罗板,固件库工程搭建
  14. 企业数字化转型战略权威指南
  15. 微信小程序自定义Dialog弹框
  16. 解决IE8 iframe透明的问题
  17. You can be happy no matter what.
  18. 元宇宙iwemeta:元宇宙数字人实践落地应用场景
  19. 【SecureFx服务器无法上传文中文件】
  20. OSChina 周四乱弹 —— 紧箍咒的工作原理

热门文章

  1. 杨辉三角python语言程序思路_python杨辉三角方法的实例介绍
  2. c语言static. volatile,嵌入式系统C语言重点语法const、volatile、static、堆栈等的意义及用法...
  3. mysql.cnf utf8_mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项
  4. “双碳”目标下新型数据中心的方向
  5. weedfs java_初窥weedfs分布式文件系统
  6. Py之pandas:利用pandas工具输出每行的索引值、及其对应的行数据
  7. TF学习——TF之TFOD:基于TFOD AP训练ssd_mobilenet预模型+faster_rcnn_inception_resnet_v2_模型训练过程(TensorBoard监控)全记录
  8. Algorithm:C++语言实现之贪心法算法相关问题
  9. PDF:解决从PDF中复制文字时出现的空方框问题
  10. SQLServer:GUI方式、SQL语句两种方式建立视图和GUI方式设置主键、约束等