各类资料学习下载合集
https://pan.quark.cn/s/8c91ccb5a474
在上一篇文章中,我们学习了如何将人类习惯的中缀表达式(如 8 + (3 - 1) * 5
)转换为计算机友好的后缀表达式(8 3 1 - 5 * +
)。
我们费尽心思进行转换,就是为了今天这“临门一脚”——求值。你将看到,一旦有了后缀表达式,计算过程会变得多么简单、直接和高效。这正是编译器和解释器钟爱它的原因。
一、 为什么后缀表达式计算起来这么快?
想象一下,你是一个只会执行简单指令的机器人。
- 计算中缀表达式:你需要来回扫描,记住
*
比 +
优先,还要找到配对的 ()
先算。你的“大脑”需要一个复杂的调度中心。 - 计算后缀表达式:你只需要一个传送带(我们的栈)和一个规则。你从左到右拿起传送带上的东西,遇到数字就放着,遇到符号就拿起最近的两个数字算一下,再把结果放回去。一路向前,绝不回头。
这种线性、无回溯的处理方式,完美契合了计算机的执行模型,大大提高了运算效率。
二、 求值算法:栈的终极舞台
计算后缀表达式的核心工具,依然是我们的老朋友——栈。但这次,栈里存放的不是运算符,而是数字 (操作数)。