[Java算法分析与设计]利用栈操作中缀表达式和后缀表达式的转换和运算
2017-07-05 10:07
645 查看
概念:
后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *。
中缀表达式:(2 + 1) * 3就是中缀表达式。
算法:
计算机运用后缀表达式的具体做法(摘自百度百科):
建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作数运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。
中缀表达式转换为后缀表达式的方式:
后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:(2 + 1) * 3 , 即2 1 + 3 *。
中缀表达式:(2 + 1) * 3就是中缀表达式。
算法:
计算机运用后缀表达式的具体做法(摘自百度百科):
建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作数运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。
中缀表达式转换为后缀表达式的方式:
遇到数字:直接输出 遇到'(':压栈 遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。 遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算优先级低于或等于当前符号的运算优先级,则将当前符号压栈。 处理完字符串后将栈中剩余的符号全部输出。
相关文章推荐
- PTA 表达式转换 算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
- 利用JAVA实现中缀表达式向后缀表达式的转换,并求出表达式的值
- 有关中缀表达式转换成后缀表达式的算法
- 利用栈将中缀表达式转换成后缀表达式
- 数据结构与算法Java版——中缀表达式转后缀表达式
- 关于java 的科学计算算法(前,中,后缀表达式的转换)——计算器制作的心得
- 【算法】中缀表达式、后缀表达式的java实现几网上观点的勘误。
- 中缀表达式转换为后缀表达式的算法
- 数据结构 c语言设计堆栈 并将中缀表达式转换成后缀表达式
- 【数据结构】栈的应用---四则运算表达式求值(中缀表达式与后缀表达式转换)
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 利用数组栈将中缀表达式转换成后缀表达式
- 利用数组栈将中缀表达式转换成后缀表达式
- 中缀表达式转换为后缀表达式的算法
- 中缀表达式转化为后缀表达式的算法分析
- 利用STL栈将中缀表达式转换成后缀表达式输出
- 中缀表达式转换为前缀及后缀表达式并求值(java实现)
- 利用栈将中缀表达式转换成后缀表达式
- C语言数据结构之利用栈将中缀表达式转换为后缀表达式
- 实现计算器4则运算算法-中缀表达式转后缀表达式 - 理论