【算法与数据结构】中缀表达式转为后缀表达式
生活随笔
收集整理的這篇文章主要介紹了
【算法与数据结构】中缀表达式转为后缀表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
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(); } }運行結果
? ? ?
總結
以上是生活随笔為你收集整理的【算法与数据结构】中缀表达式转为后缀表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法与数据结构】一道检测inversi
- 下一篇: 【算法与数据结构】查找二叉树的实现