Postfix to Infix conversion using stack

Write a program convert Postfix to Infix using stack

Example 1:

Input: postfix = "ABC*+EF/GH^*+"
Output: infix="A+B*C+E/F*G^H"

Approach 

Java

import java.util.HashMap;
import java.util.Stack;

public class PostfixToInfix {
    
    public static void main(String[] args) {
        // postfix
        String postFIx = "ABC*+EF/GH^*+";
        // postfix to infix
        String infix = postfixToInfix(postFIx);
        System.out.println("Infix is " + infix);
    }

    private static String postfixToInfix(String postFIx) {
        String infix = "";
        // stack for hold operator
        Stack<Stringstack = new Stack<>();
        // Iterate till given postfix length
        for (int i = 0; i < postFIx.length(); i++) {
            // hold char from postFIx
            char c = postFIx.charAt(i);
            // If letter then add into stack
            if (Character.isLetter(c)) {
                stack.add(String.valueOf(c));
            } else {
                // rule = second+operator+first
                String a = stack.pop();
                String b = stack.pop();
                stack.add(b + "" + c + "" + a);
            }

        }
        // iterate till stack is empty
        while (!stack.isEmpty()) {
            infix += stack.pop();
        }
        return infix;
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

//unction to convert from
//postfix to infix
string postfixToInfix(string postFIx
    string infix = "";
    //stack for hold operator
    stack<stringstack;
    // Iterate till given postfix length
    for (int i = 0i < postFIx.size(); i++)
      {
        //hold char from postFIx
         char c = postFIx[i];
        // If letter then add into stack
        if (isalpha(c)) 
           {
               //convert from character
               //to string
                string strc(1,c);
                stack.push(strc);
           } 
        else 
          {
              // rule = second+operator+first
                string a = stack.top();
                stack.pop();
                string b = stack.top();
                stack.pop();

                //convert from character
                //to string
                string strc(1,c);
                stack.push(b + "" + strc + "" + a);
            }

        }
        //iterate till stack is empty
        while (!stack.empty()) {
            {
                infix += stack.top();
                stack.pop();
            }
        }
        return infix;
}
int main()
{
   // postfix
   string postFIx = "ABC*+EF/GH^*+";
   //postfix to infix
   string infix = postfixToInfix(postFIx);
   cout<<"Infix is ";
   cout<<infix<<"\n";
   return 0;
}


No comments:

Post a Comment