python数据结构与算法 14 队列的python实现

《Python数据结构与算法分析》第三章课后习题 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、课后习题 前言 最近开始学数据结构,打算用python作为语言,看的书是米勒和戴维的《Python数据结构与算法分析》。目前大三,希望能一个月速成,奥利给!!注意到课本中的练习题没有参考答案,我自己写了一份放到这上面,更详细,完整的代码在我的github:https://github.com/Yunzz-goon/PythonForDataStructure 欢迎大家一起交流!!! ———————————————————— 阅读详情

队列的python实现

在建立抽象数据类型之后,可以建立一个类来实现队列的。和以前一样,我们采用python内置的列表作为工具来建立队列类。

队列也是有序的,所以需要决定队列的哪一头作为队列的前端和尾端。在下面的实现代码中,我们约定列表的0位置是队列的尾部,这样的好处是,可以直接使用列表的insert方法在队尾加入数据,使用pop方法在队列的前端(这时是列表的最后一个数据)删除数据。从性能上分析,这意思着endueue是O(n),而出队是O(1)。

Listing 1

class Queue:
    def __init__(self):
        self.items = []
 
    def isEmpty(self):
        return self.items == []
 
    def enqueue(self, item):
        self.items.insert(0,item)
 
    def dequeue(self):
        return self.items.pop()
 
    def size(self):
        return len(self.items)
 


以下是测试代码

q=Queue()

q.isEmpty()

 

q.enqueue('dog')

q.enqueue(4)

q=Queue()

q.isEmpty()

 

q.enqueue(4)

q.enqueue('dog')

q.enqueue(True)

运行代码之后,可以在控制台测试以下功能:

>>>q.size()

3

>>>q.isEmpty()

False

>>>q.enqueue(8.4)

>>>q.dequeue()

4

>>>q.dequeue()

'dog'

>>>q.size()

2


Python数据结构与算法—队列 文章目录一、基本概念二、代码实现三、deque模块四、迷宫问题方法一:栈方法二:队列 一、基本概念 1.定义:队列是限制在两端进行插入操作和删除操作的线性表,允许进行存入操作的一端称为“队尾”,允许进行删除操作的一端称为“队头”。 2.特点: 1、队列只能在队头和队尾进行数据操作 2、栈模型具有先进先出或者叫做后进后出的规律 二、代码实现 主要使用队列的顺序储存 思路分析: 通过环形队列,如下图 环形队列:当队尾指针 front == Maxsize + 1 时,再前进一个位置就自动到0 队首指针 阅读详情

相关推荐

《数据结构与算法》课后习题答案

《数据结构与算法》课后习题答案,自认为对考试很有帮助

python数据结构与算法 15 队列应用之烫手的山芋

为了展示队列的应用,我们模拟一种真实的先进先出的情形。作为开始,我们观察一种儿童游戏,叫烫手的山芋(hotpotato),在这个游戏中(图2),孩子们排成一圈,把手里的东西一个传一个,在某种情形下,停止传递,手上拿着烫手的山芋的人就要被清出来,其他的人继续玩,直接只剩一个人。 从现代意义上说,这个游戏等价于著名的约瑟夫问题。据说,一世纪左右,历史学家弗拉维约瑟夫与犹太人一起反抗罗马。

量变到质变 2827

巧接面试的七大烫手山芋.pptx

巧接面试的七大烫手山芋.pptx

python--使用队列结构来模拟烫手山芋的游戏

基本功,磨起来。 # coding = utf-8 class Queue: def __init__(self): self.items = [] def is_empty(self): return self.items == [] # 入队列,加在首部 def enqueue(self, it...

weixin_30482181的博客 257

实施文档

流程管理 2008-04-23 09:44:00 874 收藏 3 分类专栏: 企业管理杂谈 文章标签: 文档 文档管理 项目管理 工作 配置管理 工具 项目实施文档是用来记录、描述、展示实施过程中一系列信息的处理过程,通过书面或图示的形式对项目活动过程或结果进行描述、定义、规定及报告。例如分阶段实施计划文档,标准业务流程文档,标准编码及数据文档,标准参数设置文档,功能操作指南文档。这些文档将会伴随着ERP实施的各个阶段逐渐充实、完善,也同时记载了整个实施的过程和成果。 作为实施顾问人员,在实施过程

qq_52337172的博客 1062

EETI_eGTouch驱动移植及校准

一.环境 芯片:NXP IMX6Q 内核版本:4.1.15 uname:Linux myimx6ek314 4.1.15-myimx6-g5d588fa6-dirty #4 SMP PREEMPT Tue Nov 17 17:26:34 CST 2020 armv7l armv7l armv7l GNU/Linux 二.官方《EETI_eGTouch_Linux_Programming_Guide_v2.5l.pdf》文档勘误 HID_MULTITOUCH =Y or N(官方文档设置为M): 正确设置H

Garden的博客 4332

数据结构与算法|第十四章:通用解题的方法论

数据结构与算法|第十四章:通用解题的方法论 前言 本章我们主要讨论当遇到一个实际的算法问题,我们应该如何解题,如何定位问题和技术选型。相关内容参考公瑾博士的《重学数据结构与算法》,公瑾老师的讲解通俗易懂,文中的方法也是多年工作的总结,希望本章能给大家提供一个通用解题的方法论。 项目环境 jdk 1.8 github 地址:https://github.com/huajiexiewenfeng/data-structure-algorithm 本章模块:solutionmethodology 1.问

谢文峰的博客 738

手把手教你用MATLAB/Simulink模拟微电网潮流方向(附代码下载)

本文提供了一份详细的MATLAB/Simulink微电网潮流仿真实战指南。通过手把手教学,指导读者从零搭建包含光伏、储能和负荷的微电网模型,并模拟并网、孤岛等多种运行场景下的潮流方向变化。文章核心在于利用Simulink实现微电网的动态潮流分析与可视化,帮助工程师深入理解分布式能源系统中的功率平衡与控制策略。

weixin_28314575的博客 106

python实现队列

队列(Queue):和栈一样,也是一种操作受限的线性表,但它只允许在表的一端进行插入,在另一端进行删除。分配一块连续的存储单元,并附带两个指针front和rear分别指示队首元素和队尾元素,一般队首指针指向队首元素,队尾指针指向队尾元素的下一个位置。定义了一个 Queue 类,表示链队列,其中包含 front 和 rear 两个指针,分别指向队列的头部和尾部。4)不可以用"rear=size"来判断队列是否为满,上图(d)也满足"rear=size",但不是队列为满,这是一种假溢出。

liulanba的博客 1万+

针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

SXXYNHHXX的博客 923

基于STM32的多参数水质检测仪系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配pH、TDS、浊度、水温四大核心水质检测模块,完整实现了多参数水质检测仪的全流程开发,从多通道ADC采集、数字滤波、温度补偿、专业校准、阈值报警到人机交互,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 484

【Python】教你彻底了解Python中的数据结构与算法

​​​​。

Easonmax的博客 4079

Windows Pychram部署Unet++过程

windows系统 在pycharm平台上配置并跑通Unet网络 这里我用的是B站课程里的资源《唐宇迪Unet图像分割语义分割实战》

ArcGis_Niu的博客 803

Python数据结构与算法

Python数据结构与算法是计算机科学中非常重要的领域,它们为解决问题提供了有效的方法和思路。数据结构是组织和存储数据的方式,而算法则是解决问题的一系列步骤。本文将从多个方面详细探讨Python中的数据结构与算法,包括基本概念、常见数据结构、以及经典算法的实现和应用。

hong161688的博客 1250

FFmpeg 开发(14):Android FFmpeg + MediaCodec 实现视频硬解码

MediaCodec 是 Android 提供的用于对音视频进行编解码的类,它通过访问底层的 codec 来实现编解码的功能,是 Android media 基础框架的一部分,通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTrack 一起使用。

字节流动 3万+

YOLOv8 | 代码逐行解析(二) | 从yaml文件到模型定义(代码逐行注释,小白必看)

本文给大家带来的是YOLOv8项目的解读,之前给大家分析了YOLOv8的项目文件分析,这一篇文章给大家带来的是模型训练从我们的yaml文件定义到模型的定义部分的讲解,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,本文的内容接上一篇的代码逐行解析(一) 项目目录分析,本文对于小白来说非常友好,非常推荐大家进行阅读,深度的了解模型的工作原理已经流程,下面我们从yaml文件来讲解。

Snu77的博客 1万+

基于Python3的数据结构与算法 - 14 队列

目录一、定义1. 环形队列2. 自定义队列二、队列的内置模块 1. 双向队列队列也可以使用列表来实现:但是这种情况下会出现一个问题:若我们采用pop(下标来进行出队),此时操作上时间复杂度为为O(n),而且在情况(d)下,此时如果我们还需要入栈,只能在后面的空间上,前面的空间会造成浪费,因此我们引入环形队列。 可以到最后从头到尾接起来。定义:当队尾指针front == Maxsize - 1时, 再前进一个位置就自动到0. 对满的情况少1格是为了防止与空队列的情况相同。我们可以通过自己创建一个类来实现队列的

weixin_47702917的博客 648

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据结构之优先队列:优先队列的介绍与基础操作实现,Python代码实现——14

优先队列(Priority queue)的介绍 优先队列是计算机中一种抽象的数据结构类,它有着一个类似和队列或者堆的结构,但是其中每个元素额外有一个优先级别 在一个优先队列中,一个高优先顺序的元素会先执行与低优先顺序的元素。在它的执行过程中,如果两个元素拥有相同的优先顺序,则会根据他们进入队列的先后顺序来确定执行先后,但是在在其他类型的数据结构中,如果两个元素优先级别相同,则不会定义这两个元素的...

Moelimoe的博客 605

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Python数据结构与算法---队列与排序

队列与排序1. 队列的简介2. 队列的实现2.1 普通队列的实现2.2 双端队列的实现2.3 阻塞队列3. 递归4. 冒泡排序法5. 冒泡排序法的实现 1. 队列的简介 队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。 队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队...

qq_45655207的博客 1318

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python数据结构与算法 pdf_数据结构与算法:Python语言描述.pdf

本书基于Python语言介绍了数据结构与算法的基本知识,主要内容包括抽象数据类型和Python面向对象程序设计、线性表、字符串、栈和队列、二叉树和树、集合、排序以及算法的基本知识。本书延续问题求解的思路,从解决问题的目标来组织教学内容,注重理论与实践的并用。更多关于数据结构与算法的资源请访问:更多相关资源:出版者的话专家指导委员会译者序前言第1章引论第2章算法分析第3章表、栈和队列第4章树第5章散...

weixin_39570777的博客 3935

【Python】进阶 - 数据结构与算法

本文系统介绍了数据结构与算法的核心概念,分为三大部分: 1️⃣ 算法分析:详细讲解时间/空间复杂度,涵盖O(1)到O(2ⁿ)不同阶的示例(如二分查找O(logn)、冒泡排序O(n²)等),对比最坏/平均情况。 2️⃣ 线性结构:解析数组、链表(单/双向)、栈和队列的实现,用Python代码演示操作(如链表节点删除、栈的LIFO特性)。 3️⃣ 非线性结构:重点讲解树(二叉树/二叉搜索树/完全二叉树)、堆(最大/最小堆)和图(邻接表表示),包含前中后序遍历、堆的heappush/heappop操作等实战代码。

weixin_52613525的博客 2052

Python数据结构与算法:非科班转码者的学习指南

数据结构与算法是编程的基础,掌握它们对于提高编程能力非常重要。作为一个非科班转码者,我深刻体会到学习数据结构与算法的过程中会遇到很多困难,但只要坚持下去,总会有所收获。我的学习过程并不是一帆风顺的,遇到了很多困难和挫折,但通过不断地实践和学习,我逐渐理解了数据结构与算法的原理和应用。保持学习,保持输出。虽然现在我还是个菜鸡,但我相信只要坚持,总有一天能成为真正的「第一程序员」!

no1coder的博客 1万+

黑马 Python数据结构与算法系列课程

目录: ┣━━1-01-算法引入.mp4 ┣━━1-05-代码执行时间测量模块timeit.mp4 ┣━━1-06-Python列表类型不同操作的时间效率.mp4 ┣━━1-04 常见时间复杂度与大小关系.mp4 ┣━━1-08-数据结构引入.mp4 ┣━━1-03 最坏时间复杂度与计算规则.mp4 ┣━━1-07-Python列表与字典操作的时间复杂度.mp4 ┣━━1-02-时间复杂度与...

weixin_46240963的博客 1122

数据结构和算法:队列

数据结构和算法:队列

大连赵哥的博客 639

【Python 数据结构 6.队列】

创建一个队列(列表实现)来存储滑动窗口中的元素,初始化头指针 front 记录当前窗口中第一个有效元素的索引,列表长度等于传入的滑动窗口长度,初始化变量 sum 用于累计当前窗口所有元素的总和,避免每次重新计算总和。判断是否当前元素的个数 大于 滑动窗口的长度,由于题目中要求最后size个值的平均值,所以直接将超过size长度部分元素出队即可(通过递增 front 指针,出队变相移动 front 指针的位置即可)// 返回 4.66667 = (1 + 10 + 3) / 3。

m0_73983707的博客 1042

计算机二级公共基础知识(一)——数据结构与算法

文章目录数据结构与算法【1】算法的概念【2】算法的复杂度【3】数据结构【4】逻辑结构和存储结构【5】线性结构和非线性结构【6】线性表及其顺序存储结构【7】线性链表【8】栈【9】队列【10】树【11】二叉树的性质【12】满二叉树和完全二叉树【13】完全二叉树的性质【14】二叉树的遍历【15】顺序查找【16】二分查找【17】排序 数据结构与算法 【1】算法的概念 算法:指一组有穷的指令集,是解题方案...

小杨的博客 7300
上一篇: python数据结构与算法 13 队列的抽象数据类型
下一篇: python数据结构与算法 15 队列应用之烫手的山芋
杀了这个男孩
博客等级 码龄18年 149粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值