数据结构之栈

news/2024/7/27 8:47:20/文章来源:https://blog.csdn.net/m0_73531461/article/details/137150854

栈的概念

  • 栈是一种遵从后进先出原则的有序集合
  • 添加新元素的一端称为栈顶,另一端称为栈底
  • 操作栈的元素时,只能从栈顶操作(添加、移除或取值)

栈的实现

  • push() 入栈方法
  • pop() 出栈方法
  • top() 获取栈顶值
  • size() 获取栈的元素个数
  • clear() 清空栈
class Stack {constructor () {// 存储栈的数据// this.data = []this.data = {}// 记录栈的数据个数(相当于数组的 length)this.count = 0}// push() 入栈方法push (item) {// 方式1:数组方法 push 添加// this.data.push(item)// 方式2:利用数组长度// this.data[this.data.length] = item// 方式3:计数方式this.data[this.count] = item// 入栈后,count 自增this.count ++}// pop() 出栈方法pop () {// 出栈的前提是栈中存在元素,应先行检测if (this.isEmpty()) {console.log('栈为空!')return}// 移除栈顶数据// 方式1:数组方法 pop 移除// return this.data.pop()// 方式2:计数方式const temp = this.data[this.count - 1]delete this.data[--this.count]return temp}// isEmpty() 检测栈是否为空isEmpty () {return this.count === 0}// top() 用于获取栈顶值top () {if (this.isEmpty()) {console.log('栈为空!')return}return this.data[this.count - 1]}// size() 获取元素个数size () {return this.count}// clear() 清空栈clear () {this.data = []this.count = 0}
}const s = new Stack()
s.push('a')
s.push('b')
s.push('c')
console.log(s)
// Stack {data: {…}, count: 3}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3月27日 磁盘操作Linux下安装MySQL

3月27日 磁盘操作&&Linux下安装MySQL 一. 增加磁盘 增加了2个磁盘,然后重启系统。 #lsblk 可用于查看所有设备挂载情况 注意:增加了2块硬盘,分别是sdb和sdc,但是这2块硬盘没有分区也没有格式化,无法使用 Li…

使用pillow创建动态图形验证码

使用pillow创建动态图形验证码 #安装pillow模块:pip3 install pillow from PIL import Image,ImageDraw,ImageFont import random import stringdef id_code(width,height,bit,font_file,font_size):"""功能:生成随机图片验证码:param w…

Java毕业设计-基于Spring Boot的在线考试系统-毕业论文+答辩ppt(附源代码+演示视频)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统登录注册2、管理员功能模块3、用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于Spring Boot的在线考试系统-毕…

如何用Git在终端以可视化的方式查看提交情况

2024年4月2日,周二上午 要使用 Git 查看树状提交情况,可以使用 git log 命令的 --graph 选项。这个选项会以树状图的形式显示提交历史,清晰地展示每个提交的分支合并情况和分支间的关系。 git log --graph 除了 --graph 选项外,还…

如何将Maven与TestNG集成

我们已经讨论了如何在maven中执行单元测试用例,但那些是JUnit测试用例,而不是TestNG。当maven使用“mvn test”命令进入测试阶段时,这些用例被执行。 本文将介绍如何将Maven与TestNG集成,并在maven进入测试阶段时执行TestNG测试。…

【Linux】开始掌握进程控制吧!

送给大家一句话: 我并不期待人生可以一直过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手。—— 加缪 开始学习进程控制 1 前言2 进程创建2.1 fork函数初识2.2 fork函数返回值2.3 写时拷贝2.4 fork常规用法2.5 fork调用失败的原因…

LangChain入门:2.OpenAPI调用ChatGPT模型

引言 在本文中,我们将带您深入探索如何通过OpenAPI与ChatGPT模型进行高效交互,实现智能文本问答功能。通过LangChain库的实践,您将学习构建一个能够与用户进行自然语言对话的系统的关键步骤。 准备步骤 在动手编码之前,请确保您…

Go 源码之互斥锁 Mutex

文章目录 一、总结二、源码(一)Mutex(二) Lock(三)Unlock 三、常见问题有劳各位看官 点赞、关注➕收藏 ,你们的支持是我最大的动力!!!接下来会不断更新 golan…

将 EDI 从 VAN 迁移到知行之桥:EDI 成本降低 90%

G公司帮助零售商在网上和实体店取得成功,是来自300家顶级制造商网络中包含狩猎,钓鱼,露营和体育用品等45,000 多种商品的批发分销商。 通过可靠的客户服务、良好的定价和超越标准大卖场产品的库存量,G公司的重点是为零售商、电子…

ZooKeeper 的持久化机制

持久化的定义: 数据,存到磁盘或者文件当中。机器重启后,数据不会丢失。内存 -> 磁盘的映射,和序列化有些像。 ZooKeeper 的持久化: SnapShot 快照,记录内存中的全量数据TxnLog 增量事务日志&#xff…

网络播放解码器 SIP-7102网络音频解码播放器

网络播放解码器 SIP-7102网络音频解码播放器 SIP-7102是一款支持SIP协议的网络音频解码播放器,具有10/100M以太网接口,其接收网络的音频数据,通过设备的DSP及放大电路,可以直接连接两路15W的扬声器。可以用于公共广播、报警系统、…

将 Three 带到 Vue 生态系统,TresJs 中文文档上线

将 Three 带到 Vue 生态系统,TresJs 中文文档上线 中文文档上线入门指南 ThreeJS 在创建 WebGL 3D 网站方面是一个奇妙的库,同时他也是一个保持不断更新的库,一些对其封装的维护者,如 TroisJS,往往很难跟上其所有的更…

主流好用的 Markdown 编辑器介绍

在当今程序员的日常工作中,Markdown 已经成为了一种常用的文本标记语言,它简洁、易读、易写,被广泛应用于写作、文档编写、博客撰写等场景。为了更高效地编辑和管理 Markdown 格式的文档,选择一款功能强大、易用的 Markdown 编辑器…

Photoshop 2024 中文---专业图像处理软件的又一次飞跃

Photoshop 2024是一款功能强大的图像处理软件,广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具,包括画笔、铅笔、颜色替换、混合器画笔等,使用户能够轻松进行图片编辑、合成、校色、抠图等操作,实现各种视觉效果…

基于单片机控制的智能轿车停车场设计

**单片机设计介绍,基于单片机控制的智能轿车停车场设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机控制的智能轿车停车场设计是一个集成了现代电子技术、自动化技术、计算机技术的综合性项目。该设计旨…

【QT学习】1.qt初识,创建qt工程,使用按钮,第一个交互按钮

1.初识qt--》qt是个框架,不是语言 1.学习路径 一 QT简介 ,QTCreator ,QT工程 ,QT的第一个程序,类,组件 二 信号与槽 三 对话框 四 QT Desiner 控件 布局 样式 五 事件 六 GUI绘图 七 文件 八 …

linux监控命令全

1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu、内存和执行时间进行排序 1.1.2 用法 top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...] 1.1.3 参数说明 命令行启动参数: -b : 批次…

YPay源支付V7开源版

YPay_V7版本即将停止维护更新,同时我们将开放最新版开源代码供学习和参考。虽然首批阶段的【function_8.1.php文件是加密的】,但授权已经除去,该代码将在新版YPay上线时开放给大家。我们也会定期进行迭代更新,随后将创建对应仓库&…

ImportError: cannot import name ‘PILLOW_VERSION‘ from ‘PIL‘

原因:torchvision模块在运行时要调用PIL模块的PILLOW_VERSION函数,但PILLOW_VERSION在Pillow 7.0.0之后的版本被移除了,Pillow 7.0.0之后的版本使用__version__函数代替PILLOW_VERSION函数。 解决方法:降低pillow版本即可。 参考…

梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码

源码简介 最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容:修复播放器接口问题,把接口本地化,但是集成外链播放器…