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 相关文章推荐
python实现无证书加密解密实例
Oct 27 Python
Python Requests 基础入门
Apr 07 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
Python之文字转图片方法
May 10 Python
python实现任意位置文件分割的实例
Dec 14 Python
django用户登录验证的完整示例代码
Jul 21 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
浅析matlab中imadjust函数
Feb 27 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
python从Oracle读取数据生成图表
Oct 14 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
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python3设计模式之简单工厂模式
2017/10/17 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
临床医学大学生求职信
2013/09/28 职场文书
中专自荐信
2013/10/13 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
敬老院活动总结
2014/04/28 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
四年级作文之说明文作文
2019/10/14 职场文书