数据结构链表之队列

队列概述

  • 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取

队列可以使用顺序表(Python中列表)实现,也可以用链表实现,这里介绍链表实现的方法

主要实现以下几个功能:

  1. is_empty()判断是否队列为空
  2. size()查看队列长度
  3. enqueue()向队列插入元素
  4. dequeue()从队列的头部取出一个元素
  5. 重写__iter__()和__next__()实现遍历功能

Python代码实现

class Node:def __init__(self, item):"""Define linked list node"""self.item = itemself.next = Noneclass Queue:def __init__(self):self.head = Noneself.last = Noneself.len = 0def is_empty(self):return self.len == 0def size(self):return self.lendef enqueue(self, item):"""Enqueue an element into this queue"""node = Node(item)if not self.last:self.head = nodeelse:self.last.next = nodeself.last = nodeself.len += 1def dequeue(self):"""Dequeue an element from this queue"""if self.head != self.last:# Has at least two elementsres = self.headself.head = self.head.nextself.len -= 1return res# Has one or zero elementres = self.headself.head = Noneself.last = Noneself.len -= 1return resdef __iter__(self):self.cur = self.headreturn selfdef __next__(self):try:temp = self.curself.cur = self.cur.nextreturn tempexcept AttributeError as e:raise StopIteration

功能验证

if __name__ == '__main__':queue = Queue()print(f"Is empty? {queue.is_empty()}")queue.enqueue(1)queue.enqueue(2)queue.enqueue(3)queue.enqueue(4)print(f"Show all elements in this queue: {[i.item for i in queue]}")print(f"Length of this queue: {queue.len}")print(f"Dequeue an element, its value: {queue.dequeue().item}")print(f"After dequeuing an element, length of this queue: {queue.len}")

打印结果:

Is empty? True
Show all elements in this queue: [1, 2, 3, 4]
Length of this queue: 4
Dequeue an element, its value: 1
After dequeuing an element, the length of this queue: 3

数据结构链表之队列,Python3实现——7相关推荐

  1. 数据结构-链表、队列、栈、哈希表

    数据结构指的是任意长度.类型的数据对应的字节在内存中的存放结构.内存存储单元的最小单位是Byte,内存物理上是连续的.无差别的.但是软件可以通过不一样的使用方式来填充.操作内存.例如数组中,数据是顺序 ...

  2. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  3. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  4. 408考研数据结构与算法之数组、链表、队列、栈知识点和算法详细教程(更新中)

    第一章:数据结构与算法概述 因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它. 数据结构是计算机软考.计算机等级考试等相关考试的必考内 ...

  5. 数据结构与算法:链表,队列,栈,递归,有序表

    反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...

  6. 数据结构链表之符号表,Python3实现——8

    数据结构链表之符号表 符号表的介绍 之前章节介绍的顺序表和链表都是一个节点储存一个元素的表,但在日常生活中我们还有很多一次需要储存成对或多个值的情况,例如: 符号表最主要的目的将一对元素,用一个键和一 ...

  7. 数据结构链表之栈,Python3简单实现——5

    数据结构链表之栈 栈的概述 定义:栈是一种基于先进后出(FILO)的数据结构,是一种只能在一段进行插入和删除操作的特殊线性表. 引入名词:将数据存入栈的动作称为压栈,将数据取出栈的动作称为弹栈 栈的特 ...

  8. 【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)

    目录 Queue.h Queue.c test.c Queue.h #pragma once //采用带头节点的单链表实现队列typedef int DataType;typedef struct Q ...

  9. 初学数据结构--链表

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在这一章,我将介绍另外一种非常重要的线性数据结构--链表.在之前介绍的动态数组,栈和队列这三种数据结构,底层其实依托于静 ...

最新文章

  1. matlab regress()
  2. 如果重力对人的意识有影响
  3. nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目
  4. matlab max与min获取矩阵最大最小值函数
  5. Android FTP Server 1
  6. PHP Cookie和Session
  7. android微信风格,Android开发实现模仿微信小窗口功能【Dialog对话框风格窗口】
  8. centos6.5 安装mysql5.6多实例(多配置文件)
  9. 一种在旧代码上增加新需求的重构模式
  10. linux 进程内存 limit,Linux 中的Soft limit 和Hard limit
  11. karto探秘之slam_karto
  12. 用php实现拍照,php中实现视频拍照
  13. python 写字机器人_机器人股票:用 Python 自动化办公能做到哪些有趣或有用的事情?作者:陈廷聿...
  14. 基于PCL的QT开发(两个月内更新完)
  15. 全程回顾 Blazor Day in China 精彩分享
  16. Aria2打造离线网盘
  17. 东南大学洪伟教授评述:毫米波与太赫兹技术
  18. 《易经》全文翻译(值得收藏)
  19. vivo手机互传的文件怎么找到_小白换机最头疼文件转移!学会vivo互传这几个技巧,换机更轻松...
  20. 北航计算机考博经验,最新的北航考博经验

热门文章

  1. 易盛极星多合约回测(问题很多)
  2. 网络爬虫--8.编码趣闻
  3. 爬虫数据executemany插入_金融数据的获取——一个爬虫的简单例子
  4. Django REST framework 视图
  5. 嵌入式常见笔试题总结(4)
  6. 如何确定VS编译器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif
  7. TCP/IP SOCKET HTTP及HTTPS之间的关系
  8. 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
  9. 精读linux源码,Linux基础入门的操作精读.doc
  10. php substr_replace 中文乱码,php substr_replace替换字符串一些实例_PHP教程