栈的简单介绍

一.栈

栈是一种先进后出的结构:(先出来的是45,要出12就必须先把前面的数据全部出完。)

2.实例化一个栈对象:

3.入栈:

4.出栈:(当走完pop就直接弹出45了。)

5.出栈的返回值可以接收:

6.peek只看当前数据并不会像pop一样删除数据:

7.Stack继承Vector,但是Vector过时了。

二.自己实现栈

1.通过数组来表示栈:

2.入栈:

3.出栈:

4.peek:

三.Stack的题

1.这道题选C:(这里的栈不是依次放入和依次取出的,所以说一下A为什么对,其余的都是类比方法。我们可以先对1进行入栈,之后在对1进行出栈,然后在对2 3 4依次压栈,在对2 3 4依次出栈就是4 3 2所以A是对的。)

2.这道题选B:(需要注意的是这里的题是依次入栈和压栈,所以就只能选B,看题一定要仔细)

3.把递归转化为循环:

4.逆波兰表达式求值:(算法是中缀表达式的从左往右按照算法的优先级加小括号,然后在从左往右通过算法的优先级取出操作符,然后算出这个后缀表达式,我们将得到的后缀表达式中数字先进行入栈,遇到运算符就出栈两个数据,第一个出栈的数据作为右操作数,第二个出栈的为左操作数,然后进行运算之后的数字再入栈进行计算,最后一个数入栈的数字就是结果。)

代码:

有效的括号匹配:

(思路:用栈来完成,这道题的思路就是给了一个括号字符串({}),我们需要拿到最里面的左括号那么需要通过入栈然后再出栈就能拿到最里面的左括号,那么意思就是当为左括号的时候就入栈,当为右括号的时候就不再入栈而是出栈了,所以刚刚的字符串当我们拿到最后一个 { 的时候,下一个为右括号则不在入栈,就要出栈看是否与这个右括号匹配,匹配的话我们就继续比对下一个右括号,如果还是配对的话这个字符串就遍历完了,这里的遍历是通过循环来遍历的,然后退出循环,此时的栈是空的,也就说明这个配对的情况是在循环走完,并且栈是空的才是完全配对的(循环走完),所以当第二个例子,我们就可以看出拿到最里面的括号的时候,不配对就直接返回false后就可以了,第三个例子就是只有一个左括号,有多个右括号,当配对完一个循环还没走完,但是栈空了(此时是在循环内部栈空的,说明此时字符串还没遍历完,代表该字符串括号没有多余的左括号来进行匹配了),此时也是不匹配的所以返回false。第四种情况就是左边括号多了,配对完一个右括号,循环就走完了,但是此时的栈不是空的,所以也是不匹配的返回一个false。)

代码:

出栈入栈次序匹配:(思路:既然要入栈的顺序是定的,那么我们判断出栈的顺序就是通过循环来判断。我们给入栈顺序的数组下标为 i 出栈数组的下标为 j ,我们通过遍历入栈顺序的数组来进行入栈数据,当入栈的元素与出栈元素想相同时我们就一直出栈,不同的时候在进行循环,如果循环结束并且栈为空那么这个入栈顺序的数组和这个出栈顺序的数组是匹配的。需要注意的是,当我们在进行判断是否需要出栈时的条件时,我们需要先判断的是,j 的值不能超过出栈数组的长度,并且栈不能为null不然我们就无法对栈中的元素和出栈顺序数组的元素来进行匹配了)

最小栈:(题设的要求是自己写一个找到最小的数据的时间复杂度是常数,那么这都题就需要两个栈,一个栈是用来存放实际数据的,另一个栈是来存放最小数据的,这样我们就可以直接出栈最小的数据。这里需要注意的是,入栈的时候如果存放第一个数据的时候,两个栈都要存放数据在里面。出栈的时候是直接出的正常栈的数据,但是我们需要知道,如果正常栈的栈顶数据就是最小的数据,那么最小栈的数据也要将这个数据出栈,这里出栈的时候需要判断最小栈是否为null保证安全性。还需要知道在比较两个引用类型的时候我们要用equals来比较两个是否相同,通过equals的返回值可以确定。或者把另一个数据拆箱成基本数据类型就可以直接用==来比较了。这里用equals比较的话会比较浪费时间)

四.链表也可以实现栈的功能:(其中的push和pop都是头插和头删)

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

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

相关文章

【Java】-【面试】-【Java进阶】

一、分布式 1、分布式锁 2、分布式ID 3、分布式事务

Leetcode - 周赛435

目录 一、3442. 奇偶频次间的最大差值 I二、3443. K 次修改后的最大曼哈顿距离三、3444. 使数组包含目标值倍数的最少增量四、3445. 奇偶频次间的最大差值 II 一、3442. 奇偶频次间的最大差值 I 题目链接 本题使用数组统计字符串 s s s 中每个字符的出现次数,然后…

kafka了解-笔记

文章目录 kafka快速上手Kafka介绍Kafka快速上手理解Kafka的集群工作机制Kafka集群的消息流转模型 Kafka客户端小型流转流程客户端工作机制 kafka快速上手 Kafka介绍 MQ的作用 MQ:MessageQueue,消息队列,是一种FIFO先进先出的数据结构&#…

支持向量机原理

支持向量机(简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域。如果不考虑集成学习的算法,不考虑特定的训练数据集,尤其在分类任务中表现突出。在分类算法中的表现SVM说是排…

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…

常用的python库-安装与使用

常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image…

Word成功接入DeepSeek详细步骤

原理 原理是利用Word的VBA宏,写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key,有一些免费的额度可以使用。大概就是这个公司提供token,我们使用这个公司的模型调用deepsee…

【Ubuntu VScode Remote SSH 问题解决】Resolver error: Error: XHR failed

1. 问题描述 VScode使用remote ssh 远程服务器,报错类似: [12:06:01.219] Downloading VS Code server locally... [12:06:01.310] Resolver error: Error: XHR failedat k.onerror (vscode-file://vscode-app/private/var/folders/g1/cvs2rnpx60qc3b4…

系统思考—双环学习

前几天,一个企业高管向我提到:“我们调整了N次方案,市场策略、团队激励、管理制度,能改的全改了,怎么还是不见起色?” 这让我想到典型的单环学习,简单来说就是:发现问题 → 采取行动…

2.11寒假

今天复习了深搜和广搜然后做了作业中的一个题目。 解析&#xff1a;外层 for 循环&#xff1a;for (int i 1; i < n; i)&#xff0c;循环变量 i 从 1 递增到 n&#xff0c;表示要依次将数字 1 到 n 分配到数组 a 中。内层 for 循环&#xff1a;for (int j 1; j < 2; j)…

使用 AlexNet 实现图片分类 | PyTorch 深度学习实战

前一篇文章&#xff0c;CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 使用 AlexNet 实现图片分类…

基于进化式大语言模型的下一代漏洞挖掘范式:智能对抗与自适应攻防体系

摘要 本文提出了一种基于进化式大语言模型(Evolutionary LLM)的智能漏洞挖掘框架,突破了传统静态分析的局限,构建了具备对抗性思维的动态攻防体系。通过引入深度强化学习与多模态感知机制,实现了漏洞挖掘过程的自适应进化,在RCE、SQLi、XXE等关键漏洞类型的检测中达到97…

python自动化测试之Pytest框架之YAML详解以及Parametrize数据驱动!

一、YAML详解 YAML是一种数据类型&#xff0c;它能够和JSON数据相互转化&#xff0c;它本身也是有很多数据类型可以满足我们接口 的参数类型&#xff0c;扩展名可以是.yml或.yaml 作用&#xff1a; 1.全局配置文件 基础路径&#xff0c;数据库信息&#xff0c;账号信息&…

SQLMesh系列教程-2:SQLMesh入门项目实战(上篇)

假设你已经了解SQLMesh是什么&#xff0c;以及其他应用场景。如果没有&#xff0c;我建议你先阅读《SQLMesh系列教程-1&#xff1a;数据工程师的高效利器-SQLMesh》。 在本文中&#xff0c;我们将完成一个小项目或教程&#xff0c;以帮助你开始使用SQLMesh。你可以选择一步一步…

人工智能与低代码如何重新定义企业数字化转型?

引言&#xff1a;数字化转型的挑战与机遇 在全球化和信息化的浪潮中&#xff0c;数字化转型已经成为企业保持竞争力和创新能力的必经之路。然而&#xff0c;尽管“数字化”听上去是一个充满未来感的词汇&#xff0c;落地的过程却往往充满困难。 首先&#xff0c;传统开发方式…

使用云效解决docker官方镜像拉取不到的问题

目录 前言原文地址测试jenkins构建结果:后续使用说明 前言 最近经常出现docker镜像进行拉取不了&#xff0c;流水线挂掉的问题&#xff0c;看到一个解决方案: 《借助阿里个人版镜像仓库云效实现全免费同步docker官方镜像到国内》 原文地址 https://developer.aliyun.com/artic…

R语言LCMM多维度潜在类别模型流行病学研究:LCA、MM方法分析纵向数据

全文代码数据&#xff1a;https://tecdat.cn/?p39710 在数据分析领域&#xff0c;当我们面对一组数据时&#xff0c;通常会有已知的分组情况&#xff0c;比如不同的治疗组、性别组或种族组等&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 然而&#xff0c;…

java项目之基于用户兴趣的影视推荐系统设计与实现源码(ssm+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的基于用户兴趣的影视推荐系统设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于用户…

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 0基础…

vue2 多页面pdf预览

使用pdfjs-dist预览pdf&#xff0c;实现预加载&#xff0c;滚动条翻页。pdfjs的版本很重要&#xff0c;换了好多版本&#xff0c;终于有一个能用的 node 20.18.1 "pdfjs-dist": "^2.2.228", vue页面代码如下 <template><div v-loading"loa…