浅谈线性表——栈

news2024/9/24 17:19:08

文章目录

  • 一、什么是栈?
  • 二、栈顺序、链式存储时的时间复杂度
  • 三、自我实现一个栈
    • 3.1、实现代码
    • 3.2、熟练使用栈
  • 四、栈的应用场景
    • 4.1、不可能的出栈顺序
    • 4.2、表达式
    • 4.2、OJ题

一、什么是栈?

栈是一种特殊的线性表,他只允许在固定的一端进行插入和删除元素操作。栈的底层是一个数组。

进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出原则。
在这里插入图片描述
压栈:栈的插入操作叫做 进栈/压栈/入栈,在栈顶入数据。
出栈:栈的删除操作叫做出栈。在栈顶出数据。
在这里插入图片描述

二、栈顺序、链式存储时的时间复杂度

栈是一个线性表,可以以顺序存储,也可以以链式存储,他们的时间复杂度分别如下:

在这里插入图片描述
在这里插入图片描述

三、自我实现一个栈

3.1、实现代码

自我实现一个栈

3.2、熟练使用栈

使用标准库提供集合类——栈里的方法操作栈:
代码示例

四、栈的应用场景

4.1、不可能的出栈顺序

一般这种题型,都会提示:入栈的过程中可以出栈。

4.2、表达式

中缀表达式转后缀表达式[选择题形式],通过后缀表达式(逆波兰表达式)计算出表达式的结果[代码题形式]。
在这里插入图片描述
在这里插入图片描述

4.2、OJ题

牛客或力扣上有许多栈相关的OJ题。

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

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

相关文章

直播美颜API与视频美颜SDK的开发指南:构建高效实时美颜工具

在主播美颜的背后,直播美颜API与视频美颜SDK是实现这一切的技术核心。接下来,小编将深入讲解如何开发高效的直播美颜API与视频美颜SDK。 一、视频美颜SDK的概述 视频美颜SDK则是一个开发工具包,提供了完整的美颜功能实现,开发者…

STM32(F103ZET6)第四课:串口中断

目录 需求一、串口中断过程与作用二、中断实现流程1.中断优先级分组2.配置串口中断 三、需求的实现 需求 1.设备上电后四个灯灭。 2.按下KEY1,LED1灯亮,同时串口发送“LED1灯亮”。 3.再次按下KEY1,LED1灯灭,同时串口发送“LED1灯…

大数据计算-SQL优化手段(CBO)-以Flink为例

文章目录 背景理论知识示例结果展示结果解释 背景 大数据计算中,SQL生成的执行计划第一轮会经过固定规则的优化,第二轮会根据原计划,生成多条结合成本的的执行计划,根据cost 进行排序,选出最优的执行计划。 理论知识…

深入调研亚马逊云科技AI平台Amazon Bedrock热门开发功能

国际数据公司(IDC)在2024 年 8 月发布了《 中国大模型平台市场份额, 2023 :大模型元年——初局 》调研报告 。IDC的数据显示,2023年中国大模型平台及相关应用市场规模达惊人的17.65亿元人民币,且科学计算大…

带有音频的ppt导出视频 带有音频的ppt自动播放

之前帮导师申请基金,基金委的要求是提交ppt的讲解视频,这个需求比较容易实现。只要提前把各页的音频录制好,插入对应页,然后直接选择导出-创建视频即可,不需要设置幻灯片自动切换,以及自动换片时间&#xf…

C++ 设计模式——享元模式

C 设计模式——享元模式 C 设计模式——享元模式1. 主要组成成分2. 享元模式内部状态3. 享元模式外部状态4. 逐步构建享元模式4.1 抽象享元类定义4.2 具体享元类实现4.3 享元工厂类实现4.4 主函数 5. 享元模式 UML 图享元模式 UML 图解析 6. 享元模式的优点7. 享元模式的缺点8.…

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门 博客地址:TMDOG的博客 在前几篇博客中,我们探讨了如何在 NestJS 中的一些基础功能,并可以使用NestJS实现一个简单的单体架构后端应用。本篇博客,我们将进入…

Python 如何进行简单的 GUI 编程(Tkinter)

图形用户界面(GUI)编程是指使用窗口、按钮、文本框等元素与用户进行交互的编程方式。在Python中,Tkinter是一个非常流行的标准库,它使得我们可以轻松地创建和管理图形用户界面。 Tkinter是Python内置的GUI库,它提供了…

Datawhale X 李宏毅苹果书 AI夏令营(深度学习进阶)task1(1.1+1.2)

深度学习的基础 常见的临界点的种类为局部最小值和鞍点 task1.1 1.局部最小值 对于任何目标函数f(x),如果在x处对应的f(x)值小于在x附近任意其他点的f(x)值,那么f(x)可能是局部最小值。如果f(x)在x处的值是整个域中目标函数的最小值,那么…

爬虫中使用第三方打码平台(识别验证码)

引入 在爬虫程序中,常常会遇到验证码校验的关卡,人工识别不仅慢而且很费精力,使用打码平台就成了高效,省时且便利的选择。 本次案例对于高清资源库1080zyk.com进行爬虫采集,使用超级鹰验证码识别(chaojiying.com)和python的requests库具体实现,类似的第…

CSS的动画效果

动画效果 语法: 创建动画:keyframes 调用动画:animation animation参数值 参数值效果animation-name规定 keyframes 动画的名称。animation-duration规定动画完成一个周期所花费的秒或毫秒。默认是 0animation-timing-function规定动画的速…

ZBrush入门使用介绍——11、边缘环

大家好,我是阿赵。   继续介绍ZBrush的用法。这次看看边缘环的使用方法。我个人的感觉,边缘环有点类似于3DsMax之类软件的挤出功能,可以沿着环形的面,添加凹凸效果。   边缘环工具入口在几何体编辑里面: 一、 边…

AI大语言模型之分布式训练概述

一、前言 随着语言模型参数量和所需训练数据量的急速增长,单个机器上有限的资源已无法满足大语言模型训练的要求。需要设计分布式训练(Distributed Training)系统来解决海量的计算和内存资源需求问题。 在分布式训练系统环境下需要将一个模…

关于java中Excel的导入导出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置pom依赖二、搭建utils工具类1.Excel表头设置表2.Excel导入导出工具类3.Excel导出配置4.Excel导入配置 三、添加user表和工具类使用方法1.user表设置2.工…

uni-app开发日志:新增页和修改页因字段太多用分段器实现分段分类

schema2code默认只能实现较为简单的分组,当填写项目较多的时候,肯定是用选项卡明确分段比较合适,这时候schema2code自生成的就没法实现了,摒着最最少的代码修改来尝试设置生成前的schema和生成后的vue页面。 一、schema设计 先把…

【Hot100】LeetCode—46. 全排列

目录 1- 思路回溯 2- 实现⭐46. 全排列——题解思路 3- ACM 实现 题目连接:46. 全排列 1- 思路 回溯 由于是排列问题,需要讲究元素顺序。元素相同顺序不同是不同的排列,而组合问题不强调元素顺序。组合中的 startIndex 是用来保证&#xff…

如何用Java SpringBoot+Vue打造法律援助平台?毕业设计全攻略

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

【区间dp】 CF607B Zuma 题解

题面翻译 Genos \texttt{Genos} Genos 最近在他的手机上下载了祖玛游戏。在祖玛游戏里,存在 n ( 1 ≤ n ≤ 500 ) n(1\leq n\leq 500) n(1≤n≤500) 个一行的宝石,第 i i i 个宝石的颜色是 C i C_i Ci​。这个游戏的目标是尽快的消灭一行中所有的宝石…

python 实现zellers congruence泽勒一致算法

zellers congruence泽勒一致算法介绍 Zeller’s Congruence(泽勒一致算法)是一种用于计算给定日期是星期几的算法。这个算法可以处理公历(Gregorian calendar)和儒略历(Julian calendar)日期。其核心公式如…

SpringBoot实战:Spring Boot项目使用SM4国密加密算法

引言 在业务系统构建与部署的环节中,数据库作为核心存储组件,其连接信息的安全至关重要。通常情况下,这些敏感信息,如数据库密码,会直接以明文形式存储在YAML配置文件中,这无疑增加了信息泄露的风险。为有效…