document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.util.Stack;
  2.  
  3. public class InfixToPostFix {
  4.  
  5.     static int precedence(char c){
  6.         switch (c){
  7.             case \'+\':
  8.             case \'-\':
  9.                 return 1;
  10.             case \'*\':
  11.             case \'/\':
  12.                 return 2;
  13.             case \'^\':
  14.                 return 3;
  15.         }
  16.         return -1;
  17.     }
  18.  
  19.     static String infixToPostFix(String expression){
  20.  
  21.         String result = "";
  22.         Stack<Character> stack = new Stack<>();
  23.         for (int i = 0; i <expression.length() ; i++) {
  24.             char c = expression.charAt(i);
  25.  
  26.             //check if char is operator
  27.             if(precedence(c)>0){
  28.                 while(stack.isEmpty()==false && precedence(stack.peek())>=precedence(c)){
  29.                     result += stack.pop();
  30.                 }
  31.                 stack.push(c);
  32.             }else if(c==\')\'){
  33.                 char x = stack.pop();
  34.                 while(x!=\'(\'){
  35.                     result += x;
  36.                     x = stack.pop();
  37.                 }
  38.             }else if(c==\'(\'){
  39.                 stack.push(c);
  40.             }else{
  41.                 //character is neither operator nor (
  42.                 result += c;
  43.             }
  44.         }
  45.         for (int i = 0; i <=stack.size() ; i++) {
  46.             result += stack.pop();
  47.         }
  48.         return result;
  49.     }
  50.  
  51.     public static void main(String[] args) {
  52.         String exp = "A+B*(C^D-E)";
  53.         System.out.println("Infix Expression: " + exp);
  54.         System.out.println("Postfix Expression: " + infixToPostFix(exp));
  55.     }
  56. }
');