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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python实现爬虫下载漫画示例
Feb 16 Python
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python中函数的返回值示例浅析
Aug 28 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 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 配置文件中open_basedir选项作用
2009/07/19 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
php发送post请求的三种方法
2014/02/11 PHP
8个必备的PHP功能开发
2015/10/02 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
django模板结构优化的方法
2019/02/28 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
纯CSS3实现移动端展开和收起效果的示例代码
2020/04/26 HTML / CSS
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
商场拾金不昧表扬信
2014/01/13 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
学生操行评语大全
2014/04/24 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
「月刊Action」2022年5月号封面公开
2022/03/21 日漫