用python实现栈和队列

栈和队列——python 一、栈 定义一个栈 栈的应用——括号匹配问题 栈的应用——迷宫问题 二、队列 自定义队列 python队列的内置模块 队列应用——打印文件后五行 队列应用——迷宫问题 python的数据结构与算法之栈与队列 阅读详情

栈:

class Stack():
    def __init__(self):
        self.items = []
    def push(self,item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def peek(self):
        return len(self.items) - 1
    def isEmpty(self):
        return self.items == []
    def size(self):
        return len(self.items)

队列:

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

- 案例:烫手的山芋
    - 烫手山芋游戏介绍:6个孩子围城一个圈,排列顺序孩子们自己指定。第一个孩子手里有一个烫手的山芋,需要在计时器计时        1秒后将山芋传递给下一个孩子,依次类推。规则是,在计时器每计时7秒时,手里有山芋的孩子退出游戏。该游戏直到剩下         一个孩子时结束,最后剩下的孩子获胜。请使用队列实现该游戏策略,排在第几个位置最终会获胜。
    - 准则:手里有山芋的孩子永远排在队列的头部

kids = ['A','B','C','D','E','F']
queue = Queue()
for kid in kids:
    queue.enqueue(kid) #A对头F队尾
while queue.size() > 1:
    for i in range(6): #每循环一次,山芋传递一次,手里有山芋的孩子永远在对头位置
        kid = queue.dequeue()
        queue.enqueue(kid)
    queue.dequeue()
    
print('获胜的选手是:',queue.dequeue())

双端队列

  • Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。
  • addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。
  • addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。
  • removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。
  • removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。
  • isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。
  • size() 返回 deque 中的项数。它不需要参数,并返回一个整数。
    class Deque():
        def __init__(self):
            self.items = []
        def addFront(self,item):
            self.items.insert(0,item)
        def addRear(self,item):
            self.items.append(item)
        def removeFront(self):
            return self.items.pop()
        def removeRear(self):
            return self.items.pop(0)
        def isEmpty(self):
            return self.items == []
        def size(self):
            return len(self.items)

    双端队列应用案例:回文检查

  • 回文是一个字符串,读取首尾相同的字符,例如,radar toot madam。
def isHuiWen(s):
    ex = True
    q = Deque()
    for ch in s:
        q.addFront(ch)
    while q.size() > 1:
        if q.removeFront() != q.removeRear():
            ex = False
            break
        
    return ex

 

python 实现栈和队列 本文不涉及栈和队列概念的详细讲解,而着重利用 python 实现栈和队列,在其中穿插代码讲解。 目录栈队列 栈 栈实现数据的后进先出(LIFO)。 队列 队列实现数据的先进先出(FIFO)。 阅读详情

相关推荐

Python 如何用列表实现栈和队列

用列表实现栈和队列

NFR413的博客 4007

线性结构--栈与队列(Python实现)

介绍了栈与队列的Python实现,并用其解决了“括号匹配”问题、“算式判别”问题

m0_57535869的博客 1527

【项目实战】基于STM32单片机的智能小车设计(有代码)

【1】背景意义 近些年随着国民生活水平的提升,以小车为载体的轮式机器人进入了我们的生活,尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术。因此,基于嵌入式技术的无线通信视频监控轮式机器人应运而生。由于它们与人类工作相比具有成本低廉、安全稳定的优点,目前已经在许多危险作业以及工业场合得到了广泛应用而且轮式机器人不需要像人那样采取过多的保护措施,因此轮式机...

ShawnWang1994的博客 13万+

Python中常用的数据结构---栈和队列

Python中常用的数据结构—栈和队列 常用的数据结构有数组、链表(一对一)、栈和队列、哈希表、树(一对多)、图(多对多)等结构。 在本目录下我们将讲解,通过python语言实现常用的数据结构。 3.栈和队列 3.1栈 定义:栈是一种线性数据结构,栈中的元素只能先入后出。最早进入的元素存放的位置叫作栈底,最后进入的元素存放的位置叫作栈顶。栈这种数据结构既可以用数组实现,也可以用链表实现。 栈的基本操作:入栈、出栈 (1)入栈(push):入栈操作就是把新元素放入栈中,只允许从栈顶一侧放入元素,

qq_43061415的博客 4799

模仿学习(Imitation Learning)概述

什么是模仿学习呢?简单来说,模仿学习(Imitation Learning),就是要训练机器能够复制人类的连续动作,进而达到模仿的目的。其实,Imitation Learning的实用性很高,假设今天有一个训练场景,你不知道该怎么定奖励值(reward),但是你可以收集到专家的示范数据(expert demonstration data),你就可以考虑用Imitation Learning这个方法。因此,模仿学习也被寄予很高的期待,成为下一代强人工智能的关键技术。......

qq_22749225的博客 2万+

Lattice FPGA 开发流程(以 ECP5 为例)

以下是以 Lattice ECP5 FPGA 为例的开发流程,涵盖从需求分析到硬件部署的完整步骤。ECP5 系列是 Lattice 提供的高性能、低功耗 FPGA,适用于通信、工业控制和嵌入式系统等领域。

u011732210的博客 1256

python数据结构之栈和队列

python数据结构之栈和队列

guyanqiuqiu的博客 2455

UE5实战:用Cesium插件打造逼真湖泊效果(附波纹参数调优技巧)

本文详细介绍了在Unreal Engine 5中利用Cesium插件创建逼真区域水效果(如湖泊)的实战流程。重点解析了通过材质层混合机制,精细调整波纹参数(如DistanceScale、NearScale)来模拟不同水体状态,并提供了从资产创建、地形配置到视觉调优的一站式解决方案,帮助开发者高效实现非海洋水域的动态视觉效果。

weixin_29209805的博客 160

python算法:一文详细解释栈与队列

这是一个栈的经典题目,解题思路:使用栈(后进先出)来跟踪未匹配的左括号,遇到右括号时检查栈顶元素是否与之匹配。利用字典快速查询对应的左括号,确保时间复杂度为 O(n)。这里我们使用队列的方式来解决这道题。利用双端队列(Deque)维护窗口内可能成为最大值的元素索引。队列中的元素按从大到小排列,确保队首始终是当前窗口的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。列表实现没什么好说的,主要说说链表。,判断字符串是否有效。

m0_73426548的博客 1586

STM32新手必看:3分钟搞定ST官网资料下载(附F0系列手册+外设库下载技巧)

本文为STM32开发新手提供高效获取ST官网技术资料的完整指南,重点介绍如何快速下载STM32F0系列数据手册和外设库。通过系统性的资源分类解析和实用下载技巧,帮助开发者快速定位所需文档,建立本地知识库,提升开发效率。

ujm5678901的博客 268

别再只盯着报点率了:聊聊电容触摸屏算法里那些不为人知的‘软实力’

本文深入探讨了电容触摸屏算法中常被忽视的‘软实力’,包括环境噪声干扰、信号衰减补偿和多物理场耦合等核心挑战。通过对比消费电子与工业场景的算法需求,揭示了触摸算法在不同应用中的技术分野。文章还提供了实用的算法评估方法和前沿发展趋势,帮助开发者全面了解电容触摸屏技术的隐秘战场。

weixin_42524276的博客 388

如何利用Python列表实现栈和队列

在Python中,列表是一种非常灵活的数据结构,可以用来实现多种数据结构,比如栈和队列。今天我们先来看看如何用列表实现栈。

zhang120529的博客 905

【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程【站长亲测】

MMORPG端游【蒸汽幻想台服新版商业端】2025最新整理单机一键即玩镜像端+WIN系半手工端+PC客户端+网页注册+网页管理后台+教程。

百创科技 531

python实现栈和队列_python实现栈和队列

栈(Stack),也叫做堆栈, 是一种容器, 可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In Fir...

weixin_39986060的博客 184

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

利用Python列表实现栈和队列

在Python中,列表(list)是一种非常灵活的数据结构,它可以被用来实现多种不同的数据结构,包括栈(stack)和队列(queue)。下面,我将通过代码详细讲解如何利用Python列表来实现这两种数据结构。

2301_78096295的博客 1245

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python list列表实现栈和队列

队列和栈是两种数据结构,其内部都是按照固定顺序来存放变量的,二者的区别在于对数据的存取顺序: 队列是,先存入的数据最先取出,即“先进先出”。 栈是,最后存入的数据最先取出,即“后进先出”。 考虑到 list 类型数据本身的存放就是有顺序的,而且内部元素又可以是各不相同的类型,非常适合用于队列和栈的实现。本节将演示如何使用 list 类型变量来实现队列和栈。 Pythonlist实现队列 使用 list 列表模拟队列功能的实现方法是,定义一个 list 变量,存入数据时使用 insert() 方法,.

ftfy123的博客 2719

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python 实现栈和队列:从基础到高级

栈是一种后进先出(LIFO,Last In First Out)的数据结构。它类似于一个开口的盒子,只能在一端(称为栈顶)进行插入和删除操作。入栈(Push):在栈顶添加一个元素。出栈(Pop):从栈顶移除一个元素。查看栈顶元素(Peek/Top):获取栈顶元素,但不移除它。检查栈是否为空(Is Empty):判断栈是否为空。队列是一种先进先出(FIFO,First In First Out)的数据结构。它类似于一个队列,只能在一端(队尾)插入元素,在另一端(队头)删除元素。入队(Enqueue)

2409_88939367的博客 654
上一篇: 用python实现基本的排序
下一篇: 内存、顺序表、链表
SpringBears
博客等级 码龄9年 2粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值