前缀,中缀,后缀表达式

全文转载自:前缀、中缀、后缀表达式(逆波兰表达式),侵删。

前缀表达式,中缀表达式,后缀表达式都是四则运算的表达方式,用以四则运算表达式求值。

中缀表达式

中缀表达式就是我们常见的运算表达式。如 (3+4)×5-6

前缀表达式

前缀表达式又称为波兰式,前缀表达式的运算符位于操作数之前。比如- x + 3 4 5 6

前缀表达式的计算求值

从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果

  • 例如:- x + 3 4 5 6
    从右至左扫描:
    1. 遇到 6,将6入栈。【6】
    2. 遇到 5,将5入栈 。【6,5】
    3. 遇到 4,将4入栈 。【6,5,4】
    4. 遇到 3,将3入栈 。【6,5,4,3】
    5. 遇到 + 运算符,弹出 3 和 4,计算出3 + 4 = 7,将7入栈。【6,5,7】
    6. 遇到 × 运算符,弹出 7 和 5,计算出7 × 5 = 35,将35入栈.【6,35】
    7. 遇到 - 运算符,弹出 35 和 6,计算出35 - 6 = 29,得出最终结果29。
将中缀表达式转为前缀表达式

转换算符如下:

  1. 初始化两个栈:预算符栈S1,存储中间结果栈S2,

后缀表达式

后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后。

后缀表达式计算机求值

与前缀表达式类似,只是从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 op 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。

  • 例如:3 4 + 5 × 6 -
    从左至右扫描:
    1. 遇到 3,将3入栈。【3】
    2. 遇到 4,将4入栈。【3,4】
    3. 遇到 + 运算符,弹出 4 和 3,计算出 3 + 4 = 7,将7入栈。【7】
    4. 遇到 5,将5入栈。【7,5】
    5. 遇到 x 运算符,弹出7 和 5,计算出 7 * 5 = 35,将35入栈。【35】
    6. 遇到 6,将6入栈。【35,6】
    7. 遇到 - 运算符,弹出 35 和 6,计算出 35 - 6 = 29,得出最终结果。
将后缀表达式转为中缀表达式

你可能感兴趣的:(前缀,中缀,后缀表达式)