Python数据结构(栈)

news2025/1/15 3:22:06

Python数据结构(栈)

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

image-20231024104224489

栈结构的实现

栈可以用顺序表实现,也可以用链表实现

操作

class Stack(object):
    def __init__(self):
        """用顺序表模拟栈"""
        self.stack = list[]
    
    def is_empty(self):
        """判栈空"""
        return self.stack == None
    	# return no self.stack
    
    def push(self, item):
        """向栈中加入元素,因为顺序表在尾部添加元素的时间复杂度是O(1)所以用append添加"""
        self.stack.append(item)
    
    def pop(self):
        """弹出栈顶元素"""
        if self.is_empty():
            return None
        return self.stack.pop()
    
    def peek(self):
        """获取栈顶元素不弹出"""
        if self.stack:
            return self.stack[-1]
        else:
            return None
    
    def length(self):
        """获取栈的长度"""
        return len(self.stack)
    
    def bottom(self):
        """获取栈底部元素"""
        return self.stack[0]
    
    def show(self):
        """返回栈中所有元素"""
        if self.is_empty():
            return None
        return 'bottom|'+'|'.join([str(x) for x in self.stack])+'|top'
        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手撕Vue-实现计算属性

前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了。接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我们先来看看计算属性的使用。 看之前先来改造一下我们的代码基础…

DevExpress WinForms地图组件 - 轻松集成地图功能到应用程序

DevExpress WinForms地图控件允许您在WinForms应用程序中合并地图服务,您可以选择现有的地图资源,如如Bing或OpenStreetMap,或者在公司网络中创建自己的地图数据服务器。DevExpress WinForms地图控件完全支持矢量和笛卡尔坐标地图。 DevExpr…

Plex踩坑——移动缓存目录

plex在生成缩略图、刮削视频的时候会生成大量的缓存文件,占用磁盘空间。 plex默认缓存存储位置为C:\Users\xxx\AppData\Local\Plex Media Server,并且这个路径在plex设置中无法更改。 可以通过修改注册表的方式修改该路径。 首先推出plex账号&#xff…

学习视觉CV Transformer (1)--Transformer介绍

先放Transformer的经典文章 Attention Is All You Need 论文代码:https://paperswithcode.com/paper/attention-is-all-you-need Transformer结构是google在17年的Attention Is All You Need论文中提出,首先主要是在自然语言处理NLP方面应用&#xff0c…

万物“邮”爱,百余志愿者参与邮票艺术共创助力生物多样性

邮票作为生动形象的文化载体,传承着中华文化的历史和文明。自邮票问世以来,就以其精美的设计和图案,成为人们珍藏文化遗产和学习历史文化的窗口。野生动物保护一直是人们所关注的热门话题,相关部门也为宣传、拯救、保护珍贵濒危野…

[量化投资-学习笔记001]Python+TDengine从零开始搭建量化分析平台-数据存储

目录 0. 简介1. 获取交易数据2. 数据库搭建2.1. 数据库安装2.2. 创建数据库2.3. 创建超级表2.4. 创建子表 3.数据导入4. Grafana 安装4.1. 安装Grafana4.2. 安装TDengine插件 附件数据导入脚本历史交易数据-1分钟K线 0. 简介 Python:最常用的量化分析语言&#xff0…

【超参数研究02】使用随机搜索优化超参数

一、说明 在神经网络训练中,超参数也是需要优化的,然而在超参数较多(大于3个)后,如果用穷举的,或是通过经验约摸实现就显得费时费力,无论如何,这是需要研究、规范、整合的要点&#…

【自用】知识点梳理 自动控制第Z章 离散s

目录标题 离散XXXQ1 离散化的表达式和传递函数怎么匹配上? 离散系统的分析与校正Q ZOH有什么作用K ZOH的Z变换✨K Z变换表格模拟化矫正ZOH的等效Q 为什么离散化之后幅值会变化?Q 模拟化校正中ZOH环节为什么需要等效成惯性环节? 离散化的方法Q…

Android dumpsys介绍

文章目录 一、需求二、环境三、相关概念3.1 dumpsys3.2 Binder3.3 管道 四、dumpsys指令的使用4.1 dumpsys使用4.2 dumpsys指令语法 五、详细设计5.1 dumpsys流程图5.2 dumpsys查看电池信息5.2.1 dumpsys battery指令5.2.2 service->dump打印函数 5.3 dumpsys源码分析5.3.1 …

[support2022@cock.li].faust、[tsai.shen@mailfence.com].faust勒索病毒数据怎么处理|数据解密恢复

引言: 威胁网络安全的恶意软件不断涌现,而[support2022cock.li].faust勒索病毒则是其中的一员。这个网络黑暗角落的新星,以其数据绑架的方式,一度成为数据安全的威胁焦点。本文将探究[support2022cock.li].faust勒索病毒的运作方…

Cypress的安装与启动

目录 一:Cypress介绍 二:安装与使用 1、下载node.js 2、安装Cypress 3、启动Cypress 3、解决异常 三:总结 一:Cypress介绍 Cypress 是为现代网络而构建的下一代前端测试工具,用于解决开发者和 QA 工程师在测试现…

【Hydro】水文模型比较框架MARRMoT - 包含47个概念水文模型的Matlab代码

目录 说明源代码运行实例workflow_example_1.mworkflow_example_2.mworkflow_example_3.mworkflow_example_4.m 测试1、 结构体兼容性问题2、append的兼容性问题3、修改后的MARRMoT_model.m 说明 MARRMoT是一个新的水文模型比较框架,允许不同概念水文模型结构之间的…

BandZip 免费纯净快速的文件压缩/解压缩软件

BandZip 功能齐全、性能优异的免费文件压缩和解压缩工具。版本 7.x 及以上有广告,安装 7.x 以下版本即可。 功能以及特性 支持多种常见的压缩格式,包括 ZIP、RAR、7Z、TAR 等;高效的压缩算法,能够将文件压缩到较小的体积&#…

【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞

一,环境,工具准备 1-1 VMVare 16 虚拟机及下载安装(资源) 请参考以下博客安装(特详细):【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客【网络安…

vue2vue3--render函数(h)

目录 h函数 方法1. 在Options API中的使用 方法2. 在Composition API中的使用 Vue 2中的渲染函数 ​基础​ vue2 vue3 vue3--声明渲染函数 节点、树以及虚拟 DOM ​虚拟 DOM​ createElement 参数 深入数据对象 约束 vue2 vue3 使用 JavaScript 代替模板功能…

使用cpolar内网穿透实现远程Stackedit Markdown编辑器

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保…

库克嘴上说着共赢,实际却是降低中国制造占比,外媒:真是老狐狸

近期库克再度访华,在成都的苹果线下零售店与消费者密切互动,参观立讯精密并表示与中国制造合作共赢,然而日本媒体拆解iPhone15却撕下了苹果的遮羞布,库克真的是老狐狸。 一直以来,苹果CEO库克都积极向中国消费者释放善…

《java核心卷Ⅰ》知识点总结(可作面试题)

🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…

使用whatweb和python批量获取指纹信息

该程序去除了whatweb输出的一些乱码 import sys import os from pathlib import Path if __name__ "__main__":type sys.stdout.encoding file1Path("out.txt")if file1.is_file():os.remove("out.txt")os.system("whatweb -i url.txt -…

Flutter页面滑动回调处理解决方法

文章目录 TabBarViewTabBarView简介TabBarView详细介绍 TabBarView滑动时如何处理事务例子 PageControllerPageController介绍PageController 的详细介绍 TabBarView TabBarView简介 TabBarView 是 Flutter 中的一个用于显示选项卡视图的小部件。它通常与 TabBar 一起使用&am…