栈应用—中缀表达式和后缀表达式转换(原理和练习题目详解)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41122036/article/details/93749081

中缀表达式转后缀表达式

  • 规则:从左到右遍历中缀表达式的每个数字和符号,如果是数字直接写出(即成为后缀表达式的一部分);若是符号,则判断与栈顶符号的优先级,若是右括号或低于栈顶符号优先级(当是右括号时候,注意输出的只是左括号以上的符号(乘除优先于加减),那么栈顶元素依次出栈并输出,同时将当前符号进栈,一直打到最终输出为止。

后缀表达式转中缀表达式

  • 从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,和符号计算后将运算结果进栈,一直获得最终结果。
例题1

9 + (3 - 1) * 3 + 10 / 2 = 20

  • 转为后缀表达式

在这里插入图片描述

所以,转换完成的后缀表达式是: 9 3 1 - 3 * + 10 2 / +

  • 转为中缀表达式
    在这里插入图片描述
例题2

中缀表达式:(70 + 30) *20 + 10 / 2 - 3 = 2002
后缀表达式: 70 30 + 20 * 10 2 / + 3 - = 2002

例题3

中缀表达式: 10 * 3 +(3-1)* 2 - 10 / 2 = 29
后缀表达式:10 3 * 3 1 - 2 * + 10 2 / - = 29

猜你喜欢

转载自blog.csdn.net/weixin_41122036/article/details/93749081
今日推荐