python双端队列原理、实现与使用方法分析


Posted in Python onNovember 27, 2019

本文实例讲述了python双端队列原理、实现与使用方法。分享给大家供大家参考,具体如下:

双端队列

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

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

操作

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

实现

class Deque(object):
  """双端队列"""
  def __init__(self):
    self.items = []
  def is_empty(self):
    """判断队列是否为空"""
    return self.items == []
  def add_front(self, item):
    """在队头添加元素"""
    self.items.insert(0,item)
  def add_rear(self, item):
    """在队尾添加元素"""
    self.items.append(item)
  def remove_front(self):
    """从队头删除元素"""
    return self.items.pop(0)
  def remove_rear(self):
    """从队尾删除元素"""
    return self.items.pop()
  def size(self):
    """返回队列大小"""
    return len(self.items)
if __name__ == "__main__":
  deque = Deque()
  deque.add_front(1)
  deque.add_front(2)
  deque.add_rear(3)
  deque.add_rear(4)
  print deque.size()
  print deque.remove_front()
  print deque.remove_front()
  print deque.remove_rear()
  print deque.remove_rear()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python3读取MySQL-Front的MYSQL密码
May 03 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
Django Rest framework之权限的实现示例
Dec 17 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
Python 必须了解的5种高级特征
Sep 10 Python
Python利用folium实现地图可视化
May 23 Python
python b站视频下载的五种版本
May 27 Python
Python深度学习之实现卷积神经网络
Jun 05 Python
python中opencv实现图片文本倾斜校正
Jun 11 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 #Python
OpenCV+Python--RGB转HSI的实现
Nov 27 #Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 #Python
python的range和linspace使用详解
Nov 27 #Python
python定间隔取点(np.linspace)的实现
Nov 27 #Python
Python进程池Pool应用实例分析
Nov 27 #Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 #Python
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
JS模板实现方法
2013/04/03 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python对象体系深入分析
2014/10/28 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Python 在函数上添加包装器
2020/07/28 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
2014年敬老院工作总结
2014/12/08 职场文书
清洁工岗位职责
2015/02/13 职场文书
企业团队精神心得体会
2016/01/19 职场文书
离婚协议书格式范本
2016/03/18 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript