栈(定义,基本操作,顺序存储,链式存储)
目录
- 1.栈的定义
- 1.重要术语
- 2.特点
- 2.栈的基本操作
- 3.栈的顺序存储
- 1.顺序栈的定义
- 2.基本操作
- 1.初始化
- 2.进栈
- 3.出栈
- 4.读栈顶
- 3.共享栈
- 4.栈的链式存储
1.栈的定义
栈( Stack)是只允许在一端进行插入或删除操作的线性表。
一种受限的线性表,只能在栈顶进行插入删除。
1.重要术语
①
栈顶:允许插入和删除的一端。
②栈底:不允许插入和删除的一端。
③空栈:对应线性表的空表。
④栈顶元素
⑤栈底元素
2.特点
后进先出:Last In First Out (LIFO)
2.栈的基本操作
- InitStack(&S):
初始化栈。构造一个空栈S,分配内存空间。 - DestroyStack(&L):
销毁栈。销毁并释放栈S所占用的内存空间。 - Push(&S,x):
进栈,若栈S未满,则将x加入使之成为新栈顶。 - Pop(&S,&x):
出栈,若栈S非空,则弹出栈顶元素,并用x返回。(删除栈顶元素) - GetTop(S,&x):
读栈顶元素。若栈S非空,则用x返回栈顶元素。(不删除栈顶元素) - StackEmpty(S):判断一个栈S是否为空。若S为空,则返回true,否则返回false。
n个不同元素进栈,出栈元素不同排列的个数为 1 n + 1 C 2 n n \frac{1}{n+1}C_{2n}^n n+11C2nn。
上述公式称为卡特兰(Catalan)数,可采用数学归纳法证明。
3.栈的顺序存储
顺序存储:给各个数据元素分配连续的存储空间,大小为MaxSize*sizeof(ElemType)
用静态数组实现,并需要记录栈顶指针。
1.顺序栈的定义
顺序栈的缺点:栈的大小不可变。

2.基本操作
1.初始化

2.进栈

3.出栈

4.读栈顶

3.共享栈
两个栈共享同一片内存空间,两个栈从两边往中间增长。

栈满的条件: top0 + 1 == top1
4.栈的链式存储
本质上用链式存储实现栈就是只允许在
单链表的一段进行插入和删除操作。
进栈对应插入操作,出栈对应删除操作。

进栈/出栈都只能在栈顶一端进行(链头作为栈顶)。
相关文章:
栈(定义,基本操作,顺序存储,链式存储)
目录 1.栈的定义1.重要术语2.特点 2.栈的基本操作3.栈的顺序存储1.顺序栈的定义2.基本操作1.初始化2.进栈3.出栈4.读栈顶 3.共享栈 4.栈的链式存储 1.栈的定义 栈( Stack)是只允许在一端进行插入或删除操作的线性表。 一种受限的线性表,只能在栈顶进行插…...
在HTML单页面中,使用Bootstrap框架的多选框如何提交数据
1.引入Bootstrap CSS和JavaScript文件:确保在HTML页面的标签内引入Bootstrap的CSS和JavaScript文件。可以使用CDN链接或者下载本地文件。 <link rel"stylesheet" href"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css&q…...
当爱好变成职业,会不会就失去了兴趣?
当爱好变成职业,会不会就失去了兴趣? 当兴趣变成职业 1、学习能力变强了,积极主动性增加了。 2、学习努力变现了,赚到的更钱多了。 3、赚钱能力变强了,反过来再次促使兴趣发展(兴趣更大了....干劲更足了&…...
3-知识补充-MVC框架
3-知识补充-MVC框架 文章目录 3-知识补充-MVC框架MVC概述M、V、C各自负责功能及常用包MVC框架图非前后端分离框架图前后端分离框架图 MVC概述 MVC(Model、View、Controller)是软件工程中的一种**软件架构模式,它把软件系统分为模型、视图和控…...
leetcode:141. 环形链表
一、题目 函数原型: bool hasCycle(struct ListNode *head) 二、算法 判断不是环形链表,只需遍历链表找到空结点即可。 判断是环形链表,由于链表是环形的,遍历不会永远不会结束。所以要设置快慢指针,慢指针一次走一步&…...
了解企业邮箱的外观和功能特点
企业邮箱是什么样子的?企业邮箱不是单一产品,而是由一系列电子邮件服务组成的生态系统。这些服务包括但不限于邮件服务器、客户端、安全解决方案等。这些服务共同构成了企业邮箱的基础设施。 在外观上,企业邮箱和个人邮箱没有太大区别。用户通…...
配置阿里云镜像加速器 -docker
1.百度aliyun 2.找到镜像服务ACR 3.搞一个个人版,身份验证一下就行了很简单 4.找到镜像加速器Centos 5.执行下面4条命令:4条命令直接从上面操作文档中粘贴,不容易出错 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<…...
11 抽象向量空间
抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头,可以是一组实数,即一个坐标对。 箭头在高维(4维,甚至更高)空间&…...
干洗店洗鞋店管理系统app小程序;
干洗店洗鞋店管理系统是一款专业的洗衣店管理软件,集成了前台收费收银系统、会员卡管理系统和财务报表系统等强大功能。界面简洁优美,操作直观简单。这款系统为干洗店和洗衣店提供了成本分析、利润分析、洗衣流程管理等诸多实用功能,用全新的…...
NOIP2023模拟13联测34 总结
NOIP2023模拟13联测34 总结 文章目录 NOIP2023模拟13联测34 总结比赛过程题目A. origen题目大意思路 B.competition题目大意思路 C. tour题目大意 D.abstract题目大意 比赛过程 看了一下题,感觉就 T 2 T2 T2 有一点思路。 T 1 T1 T1 先打一个 30 30 30 分暴力&am…...
Python武器库开发-常用模块之subprocess模块(十九)
常用模块之subprocess模块(十九) subprocess模块介绍 subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。subprocess 它可以用来调用第三方工具(例如:exe、另一个python文件、命令行工具…...
java验证 Map 的 key、value 是否可以为空
1、验证示例代码 Map<String, Object> maps new HashMap<>();maps.put("a", "1");maps.put(null, null);maps.put("c", null);System.out.println("maps " maps);Object o maps.get(null);System.out.println("o…...
编写MBR主引导记录
BIOS 检测,初始化硬件。挑一些重要的,能保证计算机能运行那些硬件的基本IO操作。 唤醒BIOS 唤醒BIOS需要知道其入口地址,在最后将跳转到0x7c00处 接电的一瞬间,cs:ip寄存器被初始化为0xF000:0xFFF0,所以等效地址是0…...
从零开始搭建React+TypeScript+webpack开发环境-自定义配置化的模拟服务器
技术栈 我们将使用Node.js和Express.js作为我们的后端框架,以及Node.js的文件系统(fs)模块来操作文件和文件夹。此外,我们将使用Node.js的require和delete require.cache来加载和更新模拟数据。 项目结构 首先,让我们定义一个简单的项目结…...
python 之字典的相关知识
文章目录 字典的基本特点:1. 定义2. 键唯一性3. 可变性4. 键的类型 基本操作:字典的创建1. 花括号 {}2. dict() 构造函数3. 键值对的 dict() 构造函数使用 zip() 函数创建字典:注意事项访问字典中的值修改和添加键值对删除键值对 字典方法&am…...
上下游系统对接的沟通与协作
在工作中,有时会有对接其他部门系统的需求,这种需求虽然不复杂,但是跨部门协作,往往会出现各种难以沟通、协调的情况。 踩的坑多了,就记录下来。 注意:在本文中,A系统调用B系统,A依…...
pytest 的使用===谨记
发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法(测试类不能带有__init__方法) c) 模块中test开头的函数(可以不在class中) 注意点: pytest是以方法为单位发现用例的,你…...
Qt 4.8.6 的下载与安装
Qt 4.8.6 的下载与安装 Qt 4.8.6 的下载与安装下载并解压 MinGW 4.8.2Qt4.8.6 库的安装Qt Creator 3.3.0 的安装配置 Qt Creator测试 官方博客:https://www.yafeilinux.com/ Qt开源社区:https://www.qter.org/ Qt 4.8.6 的下载与安装 学习《Qt Creato…...
图形推理 | 判断推理
文章目录 一、位置规律二、样式规律三、属性规律四、数量规律 一、位置规律 平移 方向:直线(上下、左右、斜对角线)、绕圈(顺逆时针)常见步数:恒定、递增(等差) 旋转 方向ÿ…...
npm的使用
package.json 快速生成package.json npm init -y “version”: “~1.1.0” 格式为:「主版本号. 次版本号. 修订号」。 修改主版本号是做了大的功能性的改动 修改次版本号是新增了新功能 修改修订号就是修复了一些bug dependencies "dependencies": {&…...
Docker 安装 Redis 完整实操教程(新手专用,数据不丢失)
本教程全程使用官方源,无第三方镜像,步骤简单易懂,重点解决「重启数据丢失」「权限异常」问题,新手可直接复制命令操作,无需额外配置。一、前置准备(必做)确保你的电脑已安装 Docker(…...
Windows效率翻倍!这些隐藏的Win+R命令和CMD技巧你用过几个?
Windows效率革命:解锁WinR与CMD的终极生产力指南 你是否曾在同事飞速敲击键盘时暗自惊叹?那些看似简单的组合键背后,藏着Windows系统最强大的效率武器库。今天我们要探索的不仅是快捷键列表,而是一套完整的生产力操作系统——从Wi…...
**管线流程**:模型矩阵 × 视图矩阵 × 投影矩阵 × 顶点 → GPU自动完成裁剪/光栅化
一、二进制、八进制、十六进制的转换方法(通俗版) 本质:都是“逢几进一”的计数法,只是“底数”不同(2/8/16)。 二进制(Base-2):只用 0 和 1,是计算机硬件唯一…...
SecGPT-14B批量处理:用OpenClaw自动化1000个网站安全检测
SecGPT-14B批量处理:用OpenClaw自动化1000个网站安全检测 1. 为什么需要自动化安全检测 作为一名长期关注网络安全的技术从业者,我经常需要对大量网站进行安全检测。传统的手动检测方式不仅效率低下,而且容易遗漏关键漏洞。最近在测试SecGP…...
2026届毕业生推荐的六大降重复率网站实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低文本被认定为是由人工智能生成内容即AIGC的可能性,就得从语言所具备的特征…...
如何快速上手接口测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 大量线上BUG表明,对接口进行测试可以有效提升产品质量,暴露手工测试时难以发现的问题,同时也能缩短测试周期,提升测…...
网站设计:抓住这3点细节,用户体验感飙升!
网站制作要不要做得那么细呢?实际上,当我们发现很多网站制作得很优秀时,怎么看都不知道是如何做好的,但就是感觉不错,实际上这就体现在了制作网站细节上。很多时候设计网站往往容易忽视这三个细节:1、网页图…...
基于 HT for Web 的机车整备场数字孪生系统技术实现
本文基于 HT for Web(基于 WebGL/Canvas 的纯前端可视化插件)构建机车整备场数字孪生三维可视化系统,通过轻量化三维建模、实时数据对接、前端 API 驱动渲染,实现整备场全流程、全要素、全场景的数字化监管。该系统采用 B/S 架构&…...
COMSOL电磁超声仿真技术:基于5.6版本模型,精确检测L形铝板裂纹的电磁超声测量方法
COMSOL电磁超声仿真: Crack detection in L-shaped aluminum plate via electromagnetic ultrasonic measurements 版本为5.6,低于5.6的版本打不开此模型电磁超声检测(EMAT)在工业无损检测领域一直是个热门方向,最近在COMSOL 5.6上…...
响应性负载的参考信号发生器不适用于SRF,改进后的SRF生成与Vs同相的参考信号附Simulink仿真
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...
