【算法与数据结构】中缀表达式转为后缀表达式
2013-12-16 11:32
288 查看
(转载请注明出处:http://blog.csdn.net/buptgshengod)
中缀表达式是将运算符放在运算数中间的写法,如a+b*c。后缀表达式是将运算符放在运算数后面,如abc*+。
运行结果
1.题目介绍
中缀表达式是将运算符放在运算数中间的写法,如a+b*c。后缀表达式是将运算符放在运算数后面,如abc*+。
2.代码实现部分
import java.util.Stack; public class Main { private String testString = null; private Stack<Character> stack = null; public Main(String testString) { this.testString = testString; this.stack = new Stack<Character>(); } private void analysisString() { for (int i = 0; i < testString.length(); i++) { char c = testString.charAt(i); if (c == '+' || c == '-') { if (stack.isEmpty() || stack.peek() == '(') { stack.push(c); } else { while (!stack.isEmpty() && (stack.peek() == '*' || stack.peek() == '/' || stack.peek() == '+' || stack.peek() == '-')) { System.out.print(stack.pop()); } stack.push(c); } } else if (c == '*' || c == '/') { if (stack.isEmpty() || stack.peek() == '+' || stack.peek() == '-' || stack.peek() == '(') { stack.push(c); } else { while (!stack.isEmpty() && (stack.peek() == '/' || stack.peek() == '*')) { System.out.print(stack.pop()); } stack.push(c); } } else if (c == '(') { stack.push(c); } else if (c == ')') { char temp = ' '; while ((temp = stack.pop()) != '(') { System.out.print(temp); } } else { System.out.print(c); } } if (!stack.isEmpty()) { while (!stack.isEmpty()) { System.out.print(stack.pop()); } } } public static void main(String[] args) { Main testStacknew = new Main("(a-b)*c+d"); testStacknew.analysisString(); } }
运行结果
相关文章推荐
- 栈和队列6|中缀表达式转换为后缀表达式 – 数据结构和算法28
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- 中缀表达式变成等价的后缀表达式的算法
- java 实现中缀表达式转为后缀表达式
- 实现计算器4则运算算法-中缀表达式转后缀表达式 - 理论
- 有关中缀表达式到后缀表达式的程序算法
- 中缀表达式转换为后缀表达式的算法
- 数据结构学习实录三—中缀表达式转后缀表达式(C++)
- 中缀表达式转为后缀表达式
- 中缀表达式转换为后缀表达式的算法
- 【数据结构】中缀表达式|后缀表达式|前缀表达式
- 中缀表达式变成等价的后缀表达式的算法
- 数据结构与算法笔记 lesson 12 中缀表达式转后缀表达式
- 蓝桥杯 算法训练:表达式计算 中缀表达式变后缀表达式
- Java堆栈的应用2----------中缀表达式转为后缀表达式的计算Java实现
- [Java算法分析与设计]利用栈操作中缀表达式和后缀表达式的转换和运算
- 数据结构 c语言设计堆栈 并将中缀表达式转换成后缀表达式
- 数据结构与算法Java版——中缀表达式转后缀表达式
- 中缀表达式转为后缀表达式 ---- 栈
- 中缀表达式如何转为后缀表达式