中缀表达式转化为前/后缀表达式的方法

1.中缀表达式转化为后缀表达式,从左到右

(1)遇到数字直接输出。

(2)遇到“(”时直接入栈,遇到“)”时直接连续出栈输出直至遇到“(”。//“(”和“)”不在表达式中出现

(3)遇到符号时(+-*/),比较当前符号与栈顶符号的优先级,如果当前符号的优先级较高则入栈,否则栈顶符号出栈输出。

(4)重复步骤(3)直至遇到“(”或该符号优先级大于等于栈顶符号或该符号已经抵达栈底。

(5)完整遍历中缀表达式后,将栈中全部符号依次出栈输出,所得的表达式即为后缀表达式。

2.中缀表达式转化为前缀表达式,从右到左

(1)遇到数字直接输出

(2)遇到“(”时直接入栈,遇到“)”时直接连续出栈输出直至遇到“(”。//“(”和“)”不在表达式中出现

(3)遇到符号时(+-*/),比较当前符号与栈顶符号的优先级,如果当前符号的优先级较高则入栈,否则栈顶符号出栈输出。

(4)重复步骤(3)直至遇到“(”或该符号优先级大于等于栈顶符号或该符号已经抵达栈底。

(5)完整遍历中缀表达式后,将栈中全部符号依次出栈输出,所得的表达式进行逆序操作后即为后缀表达式。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
中缀表达式转化后缀表达式的步骤如下: 1. 初始化一个空栈和一个空后缀表达式。 2. 从左到右扫描中缀表达式的每个元素。 3. 如果当元素是操作数,则将其添加到后缀表达式的末尾。 4. 如果当元素是左括号,则将其压入栈中。 5. 如果当元素是右括号,则将栈中的元素弹出并添加到后缀表达式中,直到遇到左括号。左括号不会被添加到后缀表达式中,也不会被弹出。 6. 如果当元素是运算符,则比较其与栈顶运算符的优先级。如果当运算符的优先级小于或等于栈顶运算符的优先级,则将栈顶运算符弹出并添加到后缀表达式中,直到当运算符的优先级大于栈顶运算符的优先级或栈为空,然后将当运算符压入栈中。 7. 重复步骤2至6,直到扫描完整个中缀表达式。 8. 如果栈中还有元素,则将它们依次弹出并添加到后缀表达式中。 例如,将中缀表达式 - + 6 * 3 - 7 4 / 8 2 转化后缀表达式的过程如下: - 首先,初始化一个空栈和一个空后缀表达式。 - 从左到右扫描中缀表达式的每个元素: - 第一个元素是减号,是运算符,将其压入栈中。 - 第二个元素是加号,是运算符,由于栈为空,将其压入栈中。 - 第三个元素是数字6,是操作数,将其添加到后缀表达式的末尾。 - 第四个元素是乘号,是运算符,将其压入栈中。 - 第五个元素是数字3,是操作数,将其添加到后缀表达式的末尾。 - 第六个元素是减号,是运算符,将其压入栈中。 - 第七个元素是数字7,是操作数,将其添加到后缀表达式的末尾。 - 第八个元素是数字4,是操作数,将其添加到后缀表达式的末尾。 - 第九个元素是除号,是运算符,将其压入栈中。 - 第十个元素是数字8,是操作数,将其添加到后缀表达式的末尾。 - 第十一个元素是数字2,是操作数,将其添加到后缀表达式的末尾。 - 扫描完整个中缀表达式后,栈中还有运算符,将其依次弹出并添加到后缀表达式中,得到后缀表达式 6 3 * 7 4 - + 8 2 / -。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值