2016 - 2024

感恩一路有你

逆波兰式计算过程 疑问:求表达式a b*(c-d)-e/f的波兰式和逆波兰式?

浏览量:2127 时间:2021-04-09 14:17:49 作者:admin

疑问:求表达式a b*(c-d)-e/f的波兰式和逆波兰式?

A*b*C→**ABC A*b*C*D→**,右端是堆栈顶部]读入(,放入堆栈,堆栈中是(,输出:(空)读入a,直接输出,堆栈是(,输出:a,读入,堆栈是(,输出:a,读入B,直接输出,堆栈是(,输出:AB,读入),依次推出堆栈中的符号,直到遇到a([注意括号不是输出],堆栈为空,输出:AB,读入*,堆栈为*,输出:AB,读入(,堆栈为*,输出:AB,堆栈为*)读取(,放入堆栈,堆栈为*(,输出:AB,读入C,直接输出,堆栈为*(,输出:AB,C,读入-,放入堆栈,堆栈为*(-),输出:AB,C,读入D,直接输出,堆栈为*(-,输出:AB,CD,读入)。依次推出堆栈中的符号,直到遇到a([注意括号不输出]、堆栈为*(,输出:AB,CD)-读入*、放入堆栈、堆栈中为*(*)、输出:AB CD读入E、直接输出、堆栈中为*(*)、输出:AB CD-E读入,[此时堆栈中*的优先级高于堆栈中*的优先级,所以*先取出,然后放在堆栈上],堆栈中是*(,输出:ab CD-E*读入F,直接输出,堆栈中是*(,输出:ab CD-E*F)读入),依次推出堆栈中的符号,直到遇到一个为止([注意括号没有输出],堆栈是*,输出:abcd-E*F此时,读入完成,还有一个*在堆栈中,输出:abcd-e*f*完成!以上是从中缀表达式到后缀表达式的全过程,并写出了栈的变化。

什么是三元式,四元式,逆波兰式?

1)三元表达式和语句表示为一组三元表达式。每个三元表达式由OP、arg1、2arg2组成,例如(OP、arg1、arg2)。例如:A:=b*cb*D(1)(*b,c)(2)(*b,D)(3)((1),(2))(4)(:=(3),A)2)四元数是更常见的中间码形式。与三元数相比,四元数多了一个结果,如(OP,arg1,arg2,result)。OP和arg1之间有一个逗号。如果arg是默认值,请使用-occulation。例如:A:=b*C,b*D(1)(*,b,C,T1)(2)(*,b,D,T2)(3)(,T1,T2,T3)(4)(:=,T3,-,A)3)逆波兰表达式是中间代码表达式的最简单形式。将操作对象写在前面,操作符号写在后面,例如a B写为ab。实现方法:栈压,碰到操作对象,栈压,碰到操作符,在栈顶取两个操作,然后栈压。示例:a b*C->abc*(a b)*C->abc*

逆波兰式计算过程 表达式的逆波兰式 逆波兰式求值算法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。