前缀、中缀、后缀表达式
前缀表达式
规则:
从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们进行相应的计算(栈顶元素和次顶元素进行计算),并将结果入数栈;重复上述过程,直至表达式最左端,最后运算得出的值即为表达式的结果。
例如:(3 + 4) * 5 - 6 对应的前缀表达式是 - * + 3 4 5 6
针对前缀表达式求值步骤如下:
(1)从右至左进行扫描,将6、5、4、3压入堆栈。
(2)遇到 + 运算符时,弹出3和4(3为栈顶元素,4位次顶元素),计算出3 + 4 的值,再将得到的值7入栈(此时7位栈顶)。
(3)然后遇到 * 运算符,所以要弹出7和5(7为栈顶元素,5为次顶元素),计算出7 * 5的值,再将得到的值35如栈(此时35为栈顶)。
(4)最后遇到 - 运算符,弹出35和6(35为栈顶元素,6为次顶元素),计算出35 - 6 的值,得到最后结果为29。
中缀表达式
中缀表达式是最常见的运算表达式,如(3 + 4) * 5 - 6
中缀表达式的求值是我们最熟悉的,但是对计算机来说却不好操作。因此,在计算结果时,往往会将中缀表达式转换为其他表达式来操作(一般转换为后缀表达式)
后缀表达式
后缀表达式又称为逆波兰表达式,与前缀表达式相似,知识运算符位于操作数之后。
规则:
从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们进行相应的计算(次顶元素和栈顶元素进行计算),并将结果入数栈;重复上述过程,直至表达式最右端,最后运算得出的值即为表达式的结果。
例如:(3 + 4) * 5 - 6 对应的后缀表达式是3 4 + 5 * 6 -
针对后缀表达式求值步骤如下:
(1)从左至右进行扫描,将3和4压入堆栈。
(2)遇到 + 运算符,因此弹出4和3(4位次顶元素,3为栈顶元素),计算出3 + 4 的值,再将得到的值7入栈(此时7位栈顶)。
(3)将5入栈。
(4)然后遇到 * 运算符,因此弹出5和7,计算7 * 5 的值,然后将值35入栈。
(5)将6入栈。
(6)最后遇到 - 运算符,计算出35 - 6 的值,得到最后结果为29。
- 点赞
- 收藏
- 关注作者
评论(0)