浅谈线性表——栈

一、什么是栈?

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

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

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

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

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

三、自我实现一个栈

3.1、实现代码

自我实现一个栈

3.2、熟练使用栈

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

四、栈的应用场景

4.1、不可能的出栈顺序

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

4.2、表达式

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

4.2、OJ题

牛客或力扣上有许多栈相关的OJ题。
一般一些匹配、匹配次数这样的OJ题,可以思考使用栈来解决。

五、栈、栈区、栈帧的区分

:先进后出的数据结构。

虚拟机栈:JVM上的一块内存,程序定义的局部变量、方法开辟,都是在虚拟机栈上。

栈帧:方法开辟的内存叫做栈帧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值