1.用栈求中缀表达式的值: 建立2个栈,S1暂存操作数,S2暂存运算符,当遇到操作数则入S1,遇到运算符准备入S2,首先若S2为空或者S2栈顶为'(',则运算符直接入S2栈,若S2不空并且S2栈顶非'(',若当前扫描运算符的运算优先级大于栈顶运算符优先级,则入栈S2,否则对S2不停地执行出栈操作,每 ...
分类:
其他好文 时间:
2020-06-24 16:19:37
阅读次数:
53
如何理解“队列”? 队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。我们知道,栈只支持两个基本操作:入栈 push()和出栈 pop()。队列跟栈非常相似,支持的操作也很有限,最基本的 操作也是两个:入队 enqueue ...
分类:
其他好文 时间:
2020-06-24 14:02:37
阅读次数:
62
前言 逆波兰其实就是后缀表达式的计算。 那么就需要了解什么是前缀表达式、中缀表达式、后缀表达式。 正文 在此我就不客气了,直接复制网上的解释,基本一致我也不知道谁是原作者,就不贴出来了。 前缀表达式的计算机求值 从右至左扫描表达式 遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符 ...
分类:
编程语言 时间:
2020-06-17 20:15:21
阅读次数:
63
思路 借助辅助栈保存当前栈最小值。 入栈:如果入栈元素小于最小栈的栈顶元素,则同时加入最小栈;否则,将最小栈栈顶元素再次加入最下栈 出栈:同时弹出两个栈中元素 代码 时间复杂度:O(1) 空间复杂度:O(1) class MinStack { stack<int> st1; stack<int> s ...
分类:
其他好文 时间:
2020-06-17 20:02:45
阅读次数:
47
栈的基本概念 栈(Stack)是一种线性数据结构但是在存取数据的方式上还是不太一样,栈是一种“先进后出”的一种数据结构。 栈的插入和删除操作只允许在表的一端进行,这个可以操作的端就叫做栈顶,而另一端被称为栈底。 进栈和出栈 根据栈结构的特点,通常只会对栈执行可以执行以下两种操作: 1. 向栈中添加元 ...
分类:
其他好文 时间:
2020-06-15 18:06:09
阅读次数:
63
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去。这不他来了,一份详细的JVM面试真题给大家整理在下方了!一、什么情况下会发生栈内存溢出?1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括
分类:
其他好文 时间:
2020-06-15 10:35:39
阅读次数:
97
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 构建两个栈 st 、 min_st st保存所有的元素,按照进栈出栈的顺序 min_st只保存栈 ...
分类:
其他好文 时间:
2020-06-14 16:50:52
阅读次数:
55
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去。这不他来了,一份详细的JVM面试真题给大家整理在下方了! 一、什么情况下会发生栈内存溢出? 1、栈是线程私有的,栈的生命周期和线程一样,每个 ...
分类:
其他好文 时间:
2020-06-14 14:56:48
阅读次数:
53
栈 相关概念 栈是一种特殊的线性表 只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 原则:后进先出LIFO(Last In First Out) 压栈:栈的插入操作,入数据在栈顶 出栈:栈的删除操作,出数据也在栈顶 我们来实现自己的栈,首先用数组来 ...
分类:
其他好文 时间:
2020-06-14 11:14:49
阅读次数:
56
package demo14; /** * 顶点类 * @author Richard */ public class Vertex { private String value; public boolean visited; public String getValue() { return v ...
分类:
其他好文 时间:
2020-06-12 12:46:02
阅读次数:
52