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二叉树遍历的实现方法
Nov 21 Python
python基础教程之缩进介绍
Aug 29 Python
Python中尝试多线程编程的一个简明例子
Apr 07 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
python执行get提交的方法
Apr 29 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
简单实现python进度条脚本
Dec 18 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python代码块批量添加Tab缩进的方法
Jun 25 Python
序列化Python对象的方法
Aug 01 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
总结python多进程multiprocessing的相关知识
Jun 29 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php json转换相关知识(小结)
2018/12/21 PHP
js中精确计算加法和减法示例
2014/03/28 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
给Python初学者的一些编程技巧
2015/04/03 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
Pytorch to(device)用法
2020/01/08 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
全神贯注教学反思
2014/02/03 职场文书
红色电影观后感
2015/06/18 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
零基础学java之循环语句的使用
2022/04/10 Java/Android
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技