Postfix to Infix Conversion Algorithm, example and program

In this tutorial We have explored an algorithm to convert a given Postfix expression to Infix expression using Stack.

Algorithm For Postfix to Infix Conversion

Iterate the given expression from left to right, one character at a time 
 Step 1 : If a character is operand, push it to stack.
 Step 2: If a character is an operator, 
     if there are fewer than 2 values on the stack
         give error "insufficient values in expression" goto Step 4
     else
         pop 2 operands from stack 
         create a new string and by putting the operator between operands.
         push this string into stack
     Repeat Steps 1 and 2
 Step 3: At last there will be only one value or one string in the stack which will be our infix expression
 Step 4: Exit

Some important terminology

Postfix Expression
In Postfix Expression operator appear after operand, this expression is known as Postfix operation.
Infix
If Infix Expression operator is in between of operands, this expression is known as Infix operation.

Steps to Convert Postfix to Infix

  • Start Iterating the given Postfix Expression from Left to right
  • If Character is operand then push it into the stack.
  • If Character is operator then pop top 2 Characters which is operands from the stack.
  • After poping create a string in which comming operator will be in between the operands.
  • push this newly created string into stack.
  • Above process will continue till expression have characters left
  • At the end only one value will remain if there is integers in expressions. If there is character then one string will be in output as infix expression.

Example to convert postfix to Infix

Postfix Expression : abc-+de-+


TokenStackAction
aapush a in stack
ba, bpush b in stack
ca, b, cpush c in stack
a , b – cpop b and c from stack and put – in between and push into stack
+a + b – cpop a and b-c from stack and put + in between and push into stack
da + b – c, dpush d in stack
ea + b – c, d , epush e in stack
a + b – c, d – epop d and e from stack and put – in between and push into stack
+a + b – c + d – epop a + b – c and d – e from stack and put + in between and push into stack

Solution for postfix expression

postfix expression: 752+*415-/-


TokenStackAction
77push 7 in stack
57, 5push 5 in stack
27 , 5, 2push 2 in stack
+7, 7pop 2 and 5 from stack, sum it and then again push it
*49pop 7 and 7 from stack and multiply it and then push it again
449, 4push 4 in stack
149, 4, 1push 1 in stack
549, 4, 1, 5push 5 in stack
49, 4, -4pop 5 and 1 from stack
/49, -1pop 4 and 4 from stack
50pop 1 and 49 from stack

Infix to postfix conversion program

import java.util.*;

public class Main {

    public static String convert(String exp){
        int len = exp.length();
        Stack<String> stack = new Stack<>();
        for (int i = 0; i <len ; i++) {
            char c = exp.charAt(i);

            if(c=='*'||c=='/'||c=='^'||c=='+'||c=='-' ){
                String s1 = stack.pop();
                String s2 = stack.pop();
                String temp = "("+s2+c+s1+")";
                stack.push(temp);
            }else{
                stack.push(c+"");
            }
        }

        String result=stack.pop();
        return result;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter Postfix Expression: ");
        String exp = sc.nextLine();
        System.out.println("Infix Expression: " + Main.convert(exp));
    }
}

[wpusb]