堆栈

堆栈中常见的问题:

问题1: 后缀表达式怎么计算?
问题2: 中缀表达式怎么转换成后缀表达式?
问题3: 回溯算法
问题4: 深度优先搜索


什么是堆栈?
在思考这个问题之前我们先思考计算机是如何进行表达式求值的?

比如:5+6/2-3*7 = ?

正常的人类的算数逻辑是:6/2=3,3*7=21,然后再用5+3-21=-13
但是怎么让计算机去执行呢?

我们可以吧这一段表达式分成两个部分:

  1. 运算数: 5、6、7等
  2. 元算符号:+ - * /等

然后我们用后缀表达式来计算

中缀表达式:运算符号位于两个运算数中间(我们常用的)
后缀表达式:运算符号位于两个运算数之后。如:ABC*+DE/-

进栈出栈示意图

堆栈_第1张图片
屏幕快照 2017-05-17 23.16.33.png

中缀表达式如何转换为后缀表达式

堆栈_第2张图片
屏幕快照 2017-05-17 23.16.33的副本.png

你可能感兴趣的:(堆栈)