栈及应用(数据结构及算法04)

一、栈

栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表 。

栈及应用(数据结构及算法04)_第1张图片
image.png
二、栈的实现
1、顺序方式

应用实例:Stack.java源码

栈及应用(数据结构及算法04)_第2张图片
image.png
2、链式方式
栈及应用(数据结构及算法04)_第3张图片
image.png

(1)、入栈操作

栈及应用(数据结构及算法04)_第4张图片
image.png

image.png

(2)、出栈操作

栈及应用(数据结构及算法04)_第5张图片
image.png

image.png
3、逆波兰表达式

逆波兰表达式把运算量写在前面,把算符写在后面。
它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。
其运算方式如下:如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。

标准四则运算表达式—中缀表达式:
9+(3-1)X3+10/2 20
计算机采用—后缀表达式:
9 3 1 - 3 * + 10 2 / + 20

栈及应用(数据结构及算法04)_第6张图片
image.png

数字输出,运算符进栈,括号匹配出栈,比栈顶优先级低就出栈(表中1>2)

你可能感兴趣的:(栈及应用(数据结构及算法04))