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处理文件中每个词的方法
May 22 Python
Python判断Abundant Number的方法
Jun 15 Python
理解python正则表达式
Jan 15 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
python并发编程之线程实例解析
Dec 27 Python
python机器学习之贝叶斯分类
Mar 26 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
python实现KNN近邻算法
Dec 30 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
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
node.js的事件机制
2017/02/08 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
Python实现的快速排序算法详解
2017/08/01 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python 为什么说eval要慎用
2019/03/26 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
益模软件Java笔试题
2012/03/27 面试题
C# .NET面试题
2015/11/28 面试题
纪念建党演讲稿范文
2014/01/13 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
企业宣传策划方案
2014/05/29 职场文书
初中班干部工作总结
2015/08/10 职场文书
清洁工工作总结
2015/08/11 职场文书
2016中秋节问候语
2015/11/11 职场文书
《落花生》教学反思
2016/02/16 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
SQL Server使用导出向导功能
2022/04/08 SQL Server