编写算术表达式的方法称为符号。算术表达式可以用三种不同但等效的符号表示,即,无需更改表达式的本质或输出。这些符号是–
中缀
字首
后缀
缀符号是正常的符号,我们在编写不同的数学表达式时会使用它们。前缀和后缀表示法有很大不同。
在这种表示法中,运算符以操作数为前缀,即运算符被写在操作数之前。例如,+ ab。这等效于其后缀符号a + b。前缀符号也称为波兰符号。
这种表示法样式称为反向波兰表示法。在这种表示方式中,运算符后缀到操作数之后,即运算符写在操作数之后。例如,ab +。这等效于其后缀符号a + b。
表达式编号 | 中缀符号 | 前缀符号 | 后缀符号 |
1 | a + b | + Ab | Ab + |
2 | (a + b)* c | * + abc | ab + c * |
3 | a *(b + c) | * a + bc | abc + * |
4 | a / b + c / d | + / AB / CD | ab / cd / + |
5 | (a + b)*(c + d) | * + AB + CD | ab + cd + * |
6 | ((a + b)* c)-d | -* + abcd | ab + c * d- |
正如我们已经讨论的那样,这不是一种设计算法或程序来解析中缀符号的非常有效的方法。而是将这些infix表示法首先转换为postfix或前缀表示法,然后进行计算。
要解析任何算术表达式,我们还需要注意运算符的优先级和关联性。
当一个操作数位于两个不同的运算符之间时,哪个运算符将最先采用该操作数,取决于一个运算符的优先级。例如 -
当你编写一个算术表达式如 B*C 时,表达式的形式使你能够正确理解它。在这种情况下,你知道 B 乘以 C, 因为乘法运算符 * 出现在表达式中。这种类型的符号称为中缀,因为运算符在它处理的两个操作数之间。看另外一个中缀示例,A+B*C,运算符 + 和 * 仍然出现在操作数之间。这里面有个问题是,他们分别作用于哪个运算数上,+ 作用于 A 和 B , 还是 * 作用于 B 和 C?表达式似乎有点模糊
本文向大家介绍中缀表达式转后缀表达式相关面试题,主要包含被问及中缀表达式转后缀表达式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 对于中缀表达式,遇到操作数直接将其输出,如果遇到操作符和左括号全部压入栈中,若遇到右括号则将栈中元素全部弹出,直到遇到左括号为止。压栈过程中,若遇到其它操作符,从栈中弹出元素直到遇到更低优先级的操作符为止。
本文向大家介绍将中缀转换为后缀表达式,包括了将中缀转换为后缀表达式的使用技巧和注意事项,需要的朋友参考一下 前缀表达式是人类可读和可解的。我们可以轻松地区分算子的顺序,也可以在计算数学表达式时先使用括号将其求解。计算机无法轻松地区分运算符和括号,这就是为什么需要后缀转换的原因。 要将中缀表达式转换为后缀表达式,我们将使用堆栈数据结构。通过从左到右扫描infix表达式,当我们得到任何操作数时,只需将
使用的到算法: 输入: 预期输出: 实际输出: 如果当前运算符和堆栈顶部的运算符具有优先级,则检查它们的相关性, null null 然而,我的代码不适合于关联。有人能解释一下在上面的实现中如何处理关联性吗?
本文向大家介绍将中缀转换为前缀表达式,包括了将中缀转换为前缀表达式的使用技巧和注意事项,需要的朋友参考一下 要通过计算机求解表达式,我们可以将其转换为后缀形式或前缀形式。在这里,我们将看到中缀表达式如何转换为前缀形式。 首先,中缀表达式反转。注意,对于反转,圆括号也将反转。 例如:表达式:A + B *(C-D) 反转后的表达式为:)D – C(* B + A 因此我们需要将左括号转换为右括号,反
本文向大家介绍评估后缀表达式,包括了评估后缀表达式的使用技巧和注意事项,需要的朋友参考一下 为了求解数学表达式,我们需要前缀或后缀形式。将中缀转换为后缀后,我们需要后缀评估算法来找到正确的答案。 在这里,我们还必须使用堆栈数据结构来解决后缀表达式。 从后缀表达式中,找到一些操作数后,将它们压入堆栈。找到某个运算符后,将从堆栈中弹出两个项目,并按正确的顺序执行操作。之后,结果也被压入堆栈中以备将来使