堆栈
1. 堆栈(stack)是一个抽象的逻辑结构,顾名思义它是将对象堆放在一起,一个一个往上叠放,但要取出时,则只能从最上层拿取,不能从中间取出对象。
2. 堆栈的定义:堆栈是一个有序列表(ordered list),而且只能在一个特定的出入口进行数据的添加或删除。
3. 以集合的角度来看堆栈,则有以下定义:
如果集合 S = {a1,a2,...,ai,...,aj,...,an} 为一个堆栈,则称 a1 为栈底(bottom)元素,它是最早添加的数据;而 an 称为栈顶(top)元素,它是最后添加的。|S| = n,代表堆栈中有 n 个元素;如果n = 0, 代表空堆栈;如果堆栈的最大容量是 k (可放 k 个元素),则 n = k 时称为堆栈已满(full),即堆栈中不能再放入元素了,但可以取出元素。如果i < j,则表示 比 先被放入堆栈,取出时 aj 会比 ai 先被取出。
4. 加入元素到堆栈中称为推入(push),从堆栈中取出元素称为弹出(pop)。
5. 堆栈的应用:
- CPU处理。
- 表达式的处理。
- 子程序的调用。
- 递归程序的调用。
- 二叉树的走访。
- 图形的深度优先法遍历。
6. 表达式的应用
中缀表示法:(1+2)*3-4
前缀表示法: -*+1234
后缀表示法:12+3*4-
7. 运算符的优先级
|
优先级 |
运算符 |
1 |
高 |
括号 |
2 |
|
负号 |
3 |
**(次方) | |
4 |
*、/、% | |
5 |
+、- | |
6 |
<、<=、>=、> | |
7 |
==、!= | |
8 |
&& | |
9 |
低 |
|| |