900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 前缀表达式/中缀表达式/后缀表达式

前缀表达式/中缀表达式/后缀表达式

时间:2018-08-04 14:24:01

相关推荐

前缀表达式/中缀表达式/后缀表达式

前缀表达式/中缀表达式/后缀表达式

中缀表达式就是平常的表达式,如(3+4)*5-6=29前缀表达式又称为波兰式,也就是运算符位于数字前面,如 -*+3456后缀表达式又称为逆波兰式,也就是运算符位于数字后面,如 3 4 + 5 × 6 -后缀表达式转中缀表达式,ab+cd+*

后缀表达式转为中缀表达式要点:遇到操作数都进栈,等到碰到运算符就把栈顶两个元素出栈,运算后再入栈,直到结束。1. a入栈,b入栈,`栈为 a b`2. 遇到运算符+,b出栈,a出栈,运算为(a+b),再入栈,栈为`(a+b)`3. c入栈,d入栈,栈为`(a+b) c d`4. 遇到运算符+,d出栈,c出栈,运算为(c+d),入栈,结果为`(a+b) (c+d)`5.遇到运算符*,栈顶两个元素出栈,运算结果为(a+b)*(c+d)

后缀表达式转中缀表达式,“3 4 + 5 × 6 -” => ((3+4)*5)-6 => 29中缀表达式转为后缀表达式(从左到右扫描)分为两个栈,结果栈和运算栈,遇到的情况有

1. 如果是操作数(数字、字母),则进入结果栈2. 如果是左括号,那么入运算栈;3. 如果是右括号,那么把运算栈的栈顶元素出栈,入栈到结果栈,知道遇到左括号,遇到左括号后,这一对括号都消灭4.1 如果是运算符,如果运算栈为空,那么入栈4.2 如果是运算符,此时运算栈顶运算符不为左括号!!!,且栈里不存在优先级大于或等于该运算符的运算符,则该运算符入栈,否则大于等于该运算符的其他运算符先出栈再入栈到结果栈4.3 如果是运算符,此时栈顶运算符是左括号,那么入栈

已知一算数表达式的中缀表达式为 a*f+(b-c/d)*e,其后缀形式首先a是操作数,进结果栈;结果栈为 a是运算符,运算栈空,进运算栈 f是操作数,进结果栈结果栈为 a f+是运算符,但是栈中存在优先级大于等于的*,所以 * 先出栈,然后 * 入运算栈结果栈为 a f *(是左括号,入运算栈,运算栈为 + (b是操作数,入结果栈,结果栈 a f * b-是运算符,栈顶元素是左括号,所以-入运算栈运算栈 + ( -c是操作数,入结果栈,结果栈 a f * b c/是运算符,运算栈顶元素不是左括号,运算栈 + ( -不存在优先级大于等于 / 的元素,所以 / 入运算栈d是操作数,d入结果栈,结果栈 a f * b c d)是右括号,所以运算栈的栈顶元素出栈,知道左括号,入栈后进到结果栈此时运算栈是+ ( - /,所以结果栈变为a f * b c d / -,运算栈变为+,左右括号消灭了然后*是运算符,运算栈中不存在大于等于的元素,所以入运算栈,运算栈为+ *e是操作数,e入结果栈,结果栈为a f * b c d / - e,扫描结束,所以运算栈全部出栈到结果栈,为a f * b c d / - * +

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。