数据结构链表之队列,Python3实现——7
数据结构链表之队列
队列概述
- 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取
队列可以使用顺序表(Python中列表)实现,也可以用链表实现,这里介绍链表实现的方法
主要实现以下几个功能:
- is_empty()判断是否队列为空
- size()查看队列长度
- enqueue()向队列插入元素
- dequeue()从队列的头部取出一个元素
- 重写__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相关推荐
- 数据结构-链表、队列、栈、哈希表
数据结构指的是任意长度.类型的数据对应的字节在内存中的存放结构.内存存储单元的最小单位是Byte,内存物理上是连续的.无差别的.但是软件可以通过不一样的使用方式来填充.操作内存.例如数组中,数据是顺序 ...
- 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)
C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- 408考研数据结构与算法之数组、链表、队列、栈知识点和算法详细教程(更新中)
第一章:数据结构与算法概述 因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它. 数据结构是计算机软考.计算机等级考试等相关考试的必考内 ...
- 数据结构与算法:链表,队列,栈,递归,有序表
反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...
- 数据结构链表之符号表,Python3实现——8
数据结构链表之符号表 符号表的介绍 之前章节介绍的顺序表和链表都是一个节点储存一个元素的表,但在日常生活中我们还有很多一次需要储存成对或多个值的情况,例如: 符号表最主要的目的将一对元素,用一个键和一 ...
- 数据结构链表之栈,Python3简单实现——5
数据结构链表之栈 栈的概述 定义:栈是一种基于先进后出(FILO)的数据结构,是一种只能在一段进行插入和删除操作的特殊线性表. 引入名词:将数据存入栈的动作称为压栈,将数据取出栈的动作称为弹栈 栈的特 ...
- 【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)
目录 Queue.h Queue.c test.c Queue.h #pragma once //采用带头节点的单链表实现队列typedef int DataType;typedef struct Q ...
- 初学数据结构--链表
2019独角兽企业重金招聘Python工程师标准>>> 前言 在这一章,我将介绍另外一种非常重要的线性数据结构--链表.在之前介绍的动态数组,栈和队列这三种数据结构,底层其实依托于静 ...
最新文章
- matlab regress()
- 如果重力对人的意识有影响
- nlp文本相似度_用几行代码在Python中搜索相似文本:一个NLP项目
- matlab max与min获取矩阵最大最小值函数
- Android FTP Server 1
- PHP Cookie和Session
- android微信风格,Android开发实现模仿微信小窗口功能【Dialog对话框风格窗口】
- centos6.5 安装mysql5.6多实例(多配置文件)
- 一种在旧代码上增加新需求的重构模式
- linux 进程内存 limit,Linux 中的Soft limit 和Hard limit
- karto探秘之slam_karto
- 用php实现拍照,php中实现视频拍照
- python 写字机器人_机器人股票:用 Python 自动化办公能做到哪些有趣或有用的事情?作者:陈廷聿...
- 基于PCL的QT开发(两个月内更新完)
- 全程回顾 Blazor Day in China 精彩分享
- Aria2打造离线网盘
- 东南大学洪伟教授评述:毫米波与太赫兹技术
- 《易经》全文翻译(值得收藏)
- vivo手机互传的文件怎么找到_小白换机最头疼文件转移!学会vivo互传这几个技巧,换机更轻松...
- 北航计算机考博经验,最新的北航考博经验
热门文章
- 易盛极星多合约回测(问题很多)
- 网络爬虫--8.编码趣闻
- 爬虫数据executemany插入_金融数据的获取——一个爬虫的简单例子
- Django REST framework 视图
- 嵌入式常见笔试题总结(4)
- 如何确定VS编译器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif
- TCP/IP SOCKET HTTP及HTTPS之间的关系
- 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
- 精读linux源码,Linux基础入门的操作精读.doc
- php substr_replace 中文乱码,php substr_replace替换字符串一些实例_PHP教程