前言

什么是栈

从数据结构的角度出发,栈其实就是一种数据结构,特点:先进后出

什么是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;}
}

能带你起飞的【数据结构】成王第六篇:栈相关推荐

  1. 【数据结构 C语言版】第六篇 栈、队列经典必刷面试考研题

    [数据结构 C语言版]第六篇 栈.队列经典必刷面试考研题 写在前面 更新情况记录: 最近更新时间 更新次数 2022/10/20 1 参考博客与书籍以及链接: (非常感谢这些博主们的文章,将我的一些疑 ...

  2. 数据结构和算法(六)栈和队列

    前言 本章带大家聊一下栈和队列 方法 1.栈的概念 栈(stack),又称堆栈,它是运算受限的线性表.其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入.删除.查找等操作. 表中 ...

  3. 大学计算机基础徐久成pdf,大学计算机基础徐久成王岁花版第7章.pptx

    大学计算机基础徐久成王岁花版第7章 第1页/共54页第7章 多媒体技术7.1多媒体技术概述7.2音频信息的处理7.3图像信息处理7.4视频处理7.5多媒体动画制作第2页/共54页7.1 多媒体技术概述 ...

  4. CSDN 私房菜——情人节告白:从今以后,小助手要陪你成王

    背景:当"技坛颁奖礼"撞上"小姐姐惊喜节"您猜会怎样? CSDN博客,2018年底的这期传统意义的活动--"博客之星"将是最后一季,谁将是最 ...

  5. 【数据结构与算法】起始篇

    持续学习&持续更新中- 守破离 [数据结构与算法]起始篇 什么是数据结构和算法 什么是数据结构 什么是算法 为什么要学习数据结构和算法1 为什么要学习数据结构和算法2 为什么要学习数据结构和算 ...

  6. JS版数据结构第一篇(栈)

    前端入行门槛低,人员参差不齐 前端就是写页面的 前端的人都不懂数据结构和算法 背景 相信大家在社区经常会听到类似以上的话 由于前端上手比较快,而且平时开发时大部分写的都是业务逻辑以及交互,常常导致我们 ...

  7. 数据结构与算法(六)

    数据结构与算法 第一章 绪论 第二章 线性表 第三章 树与二叉树 第四章 图 第五章 查找 第六章 排序 文章目录 数据结构与算法 第六章 内部排序 一.基本概念 二.冒泡排序 三.快速排序 四.直接 ...

  8. SDUT-3362 数据结构实验之图论六:村村通公路

    数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descripti ...

  9. SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)

    点击打开链接 数据结构实验之链表六:有序链表的建立 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

最新文章

  1. 吴恩达与LG握手合作!
  2. 某平台的一次简单渗透测试记录
  3. 【HDU - 1452】 Happy 2004(因子和,逆元,快速幂)
  4. InfoComm China 2019,揭秘“NVIDIA风格”数据科学!
  5. java 末级递归树_如何递归获取json里末级章节名称
  6. 程序发布出现: 服务器无法处理请求---无法生成临时类(result = 1)。 错误CS2001:未能找到源文件“C:\ Windows \ TEMP \ lph54vwf.0.cs”...
  7. 极客大学架构师训练营 - 同城快递业务架构设计 - 大作业一
  8. 计算机教室验收结果报告模板,课题结题验收总结报告powerpoint演示文稿.ppt
  9. LordPE 查看程序依赖项的好工具
  10. SM9学习笔记与图解(合集)
  11. 十五个闭目养神、调养身心的方法
  12. chrome浏览器F12调试模式network不显示接口请求地址解决办法
  13. win7和ubuntu18.04安装双系统详细教程
  14. Go 语言中的字符串拼接
  15. 深圳python培训比较好的机构-深圳python培训哪家好
  16. Web后台管理系统框架模板
  17. DockOne微信分享(一二八):容器如何监控?
  18. 论文阅读 [TPAMI-2022] DE-GAN: A Conditional Generative Adversarial Network for Document Enhancement
  19. Nooice, 首次开通博客园
  20. 科研经验003:获取指定期刊的Latex/word模板

热门文章

  1. Robot Framework For循环详解
  2. 设置透明色有残留怎么办_手机内存不够怎么办 如何给手机内存扩展【介绍】...
  3. matlab imfilter 用法
  4. 一篇文章让你了解ISIGHT
  5. 女友嫁人新郎不是我 印巴歌曲铃声 女友嫁人新郎不是我 印巴歌...
  6. Android实战——ShareSDk的使用,实现一键分享微信好友、朋友圈、QQ
  7. 服务器虚拟化漂移,云服务器漂移
  8. Image Not Found VOCdevkit\images\train\000000.jpg
  9. 异步html的效果,异步加载非核心CSS_html/css_WEB-ITnose
  10. 架构师成长记_第四周_09_Nginx的模块解析及conf配置解析