Python实现队列的方法示例小结【数组,链表】


Posted in Python onFebruary 22, 2020

本文实例讲述了Python实现队列的方法。分享给大家供大家参考,具体如下:

Python实现队列

队列(FIFO),添加元素在队列尾,删除元素在队列头操作

  • 列表实现队列:利用python列表方法

代码如下:

# 列表实现队列
class listQueue(object):
  def __init__(self):
    self.items = []

  def is_empty(self):
    return self.items == None

  def size(self):
    return len(self.items)

  # 入队
  def enqueue(self, value):
    return self.items.append(value)

  # 出队
  def dequeue(self):
    if self.is_empty():
      raise Exception("queue is empty !")
    return self.items.pop(0)
  • 链表实现队列:

队列的链表实现中,队列的入队(enqueue)操作类似于链表在表尾添加元素;队列的出队(dequeue)操作类似于在链表头部删除元素

队列初始化中,定义两个特殊节点,队列头(head)和队列尾(tail),方便进行操作

代码如下:

# 链表实现队列
class linkedQueue(object):
  class Node(object):
    def __init__(self, value=None):
      self.value = value
      self.next = None

  def __init__(self):
    self.head = None
    self.tail = None
    #self.head.next = self.tail
    self.length = 0

  def is_empty(self):
    return self.length == 0

  def size(self):
    return self.length

  def enqueue(self, value):
    node = self.Node(value)
    if self.is_empty():
      self.head = node
    else:
      self.tail.next = node
    self.tail = node
    self.length += 1

  def dequeue(self):
    if self.is_empty():
      raise Exception("queue is empty !")
    item = self.head.value
    self.head = self.head.next
    self.length -= 1
    print("出队列元素为:",item)
    return item

link = linkedQueue()
link.enqueue(1)
link.enqueue(2)
link.enqueue(3)
link.enqueue(4)
print("队列长度为:",link.size())
link.dequeue()
link.dequeue()

运行结果:

队列长度为: 4
出队列元素为: 1
出队列元素为: 2

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

Python 相关文章推荐
python实现字符串和日期相互转换的方法
May 13 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
一文总结学习Python的14张思维导图
Oct 17 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
python操作excel文件并输出txt文件的实例
Jul 10 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
python异常触发及自定义异常类解析
Aug 06 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
如何用Django处理gzip数据流
Jan 29 Python
python基础学习之递归函数知识总结
May 26 Python
python实现从尾到头打印单链表操作示例
Feb 22 #Python
python实现滑雪游戏
Feb 22 #Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 #Python
Python栈的实现方法示例【列表、单链表】
Feb 22 #Python
python实现滑雪者小游戏
Feb 22 #Python
python实现拼图小游戏
Feb 22 #Python
Python双链表原理与实现方法详解
Feb 22 #Python
You might like
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php实现的漂亮分页方法
2014/04/17 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
python中list常用操作实例详解
2015/06/03 Python
Python解析树及树的遍历
2016/02/03 Python
Python 查看文件的读写权限方法
2018/01/23 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
公司经理任命书
2014/06/05 职场文书
护士2014年终工作总结
2014/11/11 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书