能带你起飞的【数据结构】成王第六篇:栈
前言
什么是栈
从数据结构的角度出发,栈其实就是一种数据结构,特点:先进后出
什么是Java虚拟机栈
Java虚拟机栈就是存放在内存当中的一块内存
此时JVM stack(Java虚拟机栈),只是JVM当中的一块内存,该内存一般用来存放
例如:局部变量........
调用函数的时候,我们会为这个函数开辟一块内存,叫做栈帧.在哪里开辟呢?
JVM stack
中缀表达式
像我们平时写到的表达式一般都是中缀表达式
举例:
(5 + 4)*3-2
后缀表达式
中缀表达式转后缀表达式
第一步:表达式加括号
(5 + 4)*3-2
((5 + 4)*3)-2
(((5 + 4)*3)-2)
后缀表达式指的是把这个运算符放到某个表达式的后边
第二步:把运算符挪到括号的后面
(((5 4)+3)*2)-
第三步:去掉括号
54+3*2-
这就是一个后缀表达式
前缀表达式同理,把运算符挪到括号的前面
如何计算后缀表达式
Java当中栈的方法
push:入栈
public class TesDome2 {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);System.out.println(stack);}}
打印结果:
画图表示:
pop:弹出栈顶元素;并且删除
public class TesDome2 {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);System.out.println(stack.pop());//弹出栈顶元素;并且删除} }
打印结果;
pop会把栈顶的4弹出,并且删除
peek:获取栈顶元素,不删除
public class TesDome2 {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);System.out.println(stack.peek());//获取栈顶元素,不删除} }
打印结果:
empty:判断栈里为不为空
public class TesDome2 {public static void main(String[] args) {Stack<Integer> stack = new Stack<>();stack.push(1);stack.push(2);stack.push(3);stack.push(4);System.out.println(stack.empty());} }
打印结果:
实现一个简单栈
栈的底层也是一个数组
class MyStack{private int[] elem;private int usedSize;public MyStack(){this.elem = new int[5];}public void push(int val){if(Full()){//扩容this.elem = Arrays.copyOf(this.elem,2*this.elem.length);}this.elem[this.usedSize] = val;this.usedSize++;}//判断数组满不满public boolean Full(){return this.usedSize == this.elem.length;}public int pop(){if(isEmpty()){throw new RuntimeException("栈为空 !");}int oldVal = this.elem[usedSize-1];this.usedSize--;return oldVal;}public int peek(){if(isEmpty()){throw new RuntimeException("栈为空 !");}return this.elem[usedSize-1];}public boolean isEmpty(){return this.usedSize == 0;} }
能带你起飞的【数据结构】成王第六篇:栈相关推荐
- 【数据结构 C语言版】第六篇 栈、队列经典必刷面试考研题
[数据结构 C语言版]第六篇 栈.队列经典必刷面试考研题 写在前面 更新情况记录: 最近更新时间 更新次数 2022/10/20 1 参考博客与书籍以及链接: (非常感谢这些博主们的文章,将我的一些疑 ...
- 数据结构和算法(六)栈和队列
前言 本章带大家聊一下栈和队列 方法 1.栈的概念 栈(stack),又称堆栈,它是运算受限的线性表.其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入.删除.查找等操作. 表中 ...
- 大学计算机基础徐久成pdf,大学计算机基础徐久成王岁花版第7章.pptx
大学计算机基础徐久成王岁花版第7章 第1页/共54页第7章 多媒体技术7.1多媒体技术概述7.2音频信息的处理7.3图像信息处理7.4视频处理7.5多媒体动画制作第2页/共54页7.1 多媒体技术概述 ...
- CSDN 私房菜——情人节告白:从今以后,小助手要陪你成王
背景:当"技坛颁奖礼"撞上"小姐姐惊喜节"您猜会怎样? CSDN博客,2018年底的这期传统意义的活动--"博客之星"将是最后一季,谁将是最 ...
- 【数据结构与算法】起始篇
持续学习&持续更新中- 守破离 [数据结构与算法]起始篇 什么是数据结构和算法 什么是数据结构 什么是算法 为什么要学习数据结构和算法1 为什么要学习数据结构和算法2 为什么要学习数据结构和算 ...
- JS版数据结构第一篇(栈)
前端入行门槛低,人员参差不齐 前端就是写页面的 前端的人都不懂数据结构和算法 背景 相信大家在社区经常会听到类似以上的话 由于前端上手比较快,而且平时开发时大部分写的都是业务逻辑以及交互,常常导致我们 ...
- 数据结构与算法(六)
数据结构与算法 第一章 绪论 第二章 线性表 第三章 树与二叉树 第四章 图 第五章 查找 第六章 排序 文章目录 数据结构与算法 第六章 内部排序 一.基本概念 二.冒泡排序 三.快速排序 四.直接 ...
- SDUT-3362 数据结构实验之图论六:村村通公路
数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descripti ...
- SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)
点击打开链接 数据结构实验之链表六:有序链表的建立 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...
最新文章
- 吴恩达与LG握手合作!
- 某平台的一次简单渗透测试记录
- 【HDU - 1452】 Happy 2004(因子和,逆元,快速幂)
- InfoComm China 2019,揭秘“NVIDIA风格”数据科学!
- java 末级递归树_如何递归获取json里末级章节名称
- 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
- 极客大学架构师训练营 - 同城快递业务架构设计 - 大作业一
- 计算机教室验收结果报告模板,课题结题验收总结报告powerpoint演示文稿.ppt
- LordPE 查看程序依赖项的好工具
- SM9学习笔记与图解(合集)
- 十五个闭目养神、调养身心的方法
- chrome浏览器F12调试模式network不显示接口请求地址解决办法
- win7和ubuntu18.04安装双系统详细教程
- Go 语言中的字符串拼接
- 深圳python培训比较好的机构-深圳python培训哪家好
- Web后台管理系统框架模板
- DockOne微信分享(一二八):容器如何监控?
- 论文阅读 [TPAMI-2022] DE-GAN: A Conditional Generative Adversarial Network for Document Enhancement
- Nooice, 首次开通博客园
- 科研经验003:获取指定期刊的Latex/word模板
热门文章
- Robot Framework For循环详解
- 设置透明色有残留怎么办_手机内存不够怎么办 如何给手机内存扩展【介绍】...
- matlab imfilter 用法
- 一篇文章让你了解ISIGHT
- 女友嫁人新郎不是我 印巴歌曲铃声 女友嫁人新郎不是我 印巴歌...
- Android实战——ShareSDk的使用,实现一键分享微信好友、朋友圈、QQ
- 服务器虚拟化漂移,云服务器漂移
- Image Not Found VOCdevkit\images\train\000000.jpg
- 异步html的效果,异步加载非核心CSS_html/css_WEB-ITnose
- 架构师成长记_第四周_09_Nginx的模块解析及conf配置解析