当前位置:网站首页>栈、队列和数组
栈、队列和数组
2022-08-02 18:48:00 【没有人会真的躺平】
3.1-1栈的基本概念
栈的定义
栈顶、栈底
栈的基本操作
栈的常考题型
3.1-2栈的顺序存储实现
第一种栈的实现方式
顺序栈的定义
顺序栈的初始化操作
顺序栈的进栈操作
顺序栈的出栈操作
顺序栈读栈顶元素操作
第二种栈的实现方式
第一种方法判栈满是 top==MaxSize-1;
共享栈
总结
3.1-3栈的链式存储实现
链栈本质上是只允许一端增加、删除元素的单链表
进栈
出栈
链栈的定义
3.2-1队列的基本概念
队列的定义
队列的基本操作
3.2-2 队列的顺序实现
队列顺序实现(通过数组)
初始化操作
入队操作
逻辑上相当于循环队列
如果不空着一个,那么rear=front就不知道是空还是满了
判定队列已满或者已空
空一个存储空间
设置队列长度变量size
设置tag,两个条件
有些区别的实现队列的方法,rear指向队尾元素,之前是rear指向队尾元素的后一个位置
指向队尾元素,由于刚开始没有队尾元素,所以可以指向n-1即 9 这个位置.
无论rear是指向队尾元素还是指向队尾元素的下一个位置,都必须采取方案才能避免判空判满的条件相同。
3.2-3 队列的链式实现
队列的链式实现
初始化(带头节点)
初始化(不带头节点)
入队(带头结点)
入队(不带头结点)
出队(带头结点)
出队(不带头结点)
队列满的条件
3.2-4 双端队列
栈、队列、双端队列都是插入和删除受限制的线性表
双端队列如果只从某一段进行输入输出,那他就退化成了一个栈,所以只要栈里面出现的合法的输出序列,在双端队列里面肯定也可以出现。
栈
输入受限的双端队列(入)
栈中合法的序列,双端队列中一定也合法,所以继续依次 判断栈中不合法的就行了
输出受限的双端队列(出)
3.3-1栈在括号匹配中的应用
三种不匹配的情况演示
判定流程
算法实现
3.3-2栈在表达式求值中的应用(上)
中缀、后缀、前缀表达式
中缀转后缀(手算)举例
例1
例2(引出左优先原则)
左优先原则可保证最后生成的后缀表达式唯一,且从左到右的运算符恰好与运算的先后顺序相对应。
后缀表达式的计算(手算)引出使用栈进行机算
后缀表达式的计算(机算)(使用栈模拟运算过程)
中缀转前缀(手算)引出右优先原则
前缀表达式计算(从右往左)
总结
3.3-3栈在表达式求值中的应用(下)
中缀转后缀(手算)
中缀转后缀(机算)例1不带括号
A是操作数,直接输出
+是运算符且栈是空的状态,把 + 压入栈
B直接输出
减号- 和栈中 + 优先级相同,把减号-弹出来,把+压入栈
c是操作数直接输出
乘号比减号优先级高,第三条不符合,所以直接压入栈。D是操作数,直接输出。
除号 / 和 栈中乘号 *优先级相同,乘号出栈,除号入栈。 E直接输出
加号 +优先级小于栈中除号/ , 等于栈中减号-的优先级。栈中运算符可依次输出。 在把加法+ 运算符压入栈中,把F直接初始,栈中加号+出栈,完成后缀表达式的转变。
中缀转后缀(机算)例2带括号
栈用来保存 暂时还不能确定运算顺序 的运算符。
弹出减号,在去掉左括号
减号优先级比乘号*低,和加号+一样,依次弹出乘号,加号,再把减号压入栈里。
除号压入栈里
全部弹出
中缀表达式的求值(用栈实现)
中缀表达式的求值就是 中缀转后缀+后缀表达式求值 的结合。
一边把中缀表达式转后缀,一边计算已经转换完的后缀表达式的值(先弹出的是右操作数)
总结
3.3-4栈在递归中的应用
3.3-5队列的应用
1、树的层次遍历(树章节详解)
2、图的广度优先遍历(图章节详解)
3、在操作系统中的应用,多个进程争抢使用有限的系统资源时,可以用队列进行先来先服务的排序。
3.4 特殊矩阵的压缩存储
普通矩阵的存储
对称矩阵的压缩存储
三角矩阵的压缩存储
三对角矩阵的压缩存储(三斜行,除了第一行和最后一行两个元素,其余的行全是三个元素)
稀疏矩阵的压缩存储
三元组存储
十字链表法
边栏推荐
- Unity 打包和切换平台|Build Settings窗口介绍
- 中断向量表概述
- MYSQL关键字执行顺序?
- E. Add Modulo 10(规律)
- E - Addition and Multiplication 2(贪心)
- 动态规划常见实例详解
- From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"
- WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器
- 微服务-gateway【服务网关入门】
- Detailed explanation of AtomicInteger
猜你喜欢
荐号 | 当一个人不联系你,不拉黑你,原因只有一个……!
为何国内年轻人都抢购iPhone,因为它更实惠也更亲民
Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)
监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
基于OpenGL的冰川与火鸟(光照计算模型、视景体、粒子系统)
Mppt photovoltaic maximum power point tracking control matlab simulation
动态规划常见实例详解
Golang swagger :missing required param comment parameters
Jupyter Notebook(Anaconda)——两个环境分别修改默认打开目录(深度学习第一周番外篇)
备战无人机配送:互联网派To C、技术派To B
随机推荐
selenium installation and environment configuration firefox
Monitor is easy to Mars debut: distributed operations help TOP3000 across management gap
【C语言刷题】双指针原地修改数组(力扣原题分析)
淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
T31开发笔记:metaipc测试
Golang swagger :missing required param comment parameters
Mppt photovoltaic maximum power point tracking control matlab simulation
有哪些好用的实时网络流量监控软件
监控易火星版即将亮相:分布式运维帮助TOP3000大企业跨越管理鸿沟
NC | 土壤微生物组的结构和功能揭示全球湿地N2O释放
共享平台如何提高财务的分账记账效率?
流量分析第一题
洛谷P2880 Balanced Lineup G
常用随机变量的数学期望和方差
Go----Go 语言快速体验之开发环境搭建及第一个项目HelloWord
有什么好用的IT资产管理软件
cache2go-源码阅读
WPF使用Prism登录
洛谷P2574 XOR的艺术
register和volatile的区别