java能做什么 什么是三元式,四元式,逆波兰式?
什么是三元式,四元式,逆波兰式?
疑问:求表达式a b*(c-d)-e/f的波兰式和逆波兰式?
a*b*C顶部→**,反波兰风格如下:a*b*C→AB*C*a*b*C*D→AB*C*CD*(a b)*((C-D)*e f)→AB CD-e*f*写(a b)*((C-D)*e f)转换过程中堆栈的变化:[注意,右端是堆栈顶部]读入(,放入堆栈,在堆栈中是(,输出:(空)读入a,直接输出,stack is(,output:A,read in,stack is(,output:A,read in B,output directly,stack is(,output:AB,read in),依次推出stack中的符号,直到遇到A([注意括号不是output],stack为空,output:AB,read in*,stack is*,output:AB,read in(,stack is*,output:AB,stack is*)read(,放入stack,堆栈为*(,输出: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*完成!以上是从中缀表达式到后缀表达式的全过程,并写出了栈的变化。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。