Objective: Given a Prefix expression, write an algorithm to convert it into Postfix expression.
Input: Prefix expression: + A B Output: Postfix expression: A B + Input: Prefix expression: *-A/BC-/AKL Output: Postfix expression: ABC/-AK/L-*
Approach: Use Stacks
Iterate the given expression from right to left, one character at a time
- If the character is operand, push it to the stack.
- If the character is operator,
- Pop an operand from the stack, say it’s s1.
- Pop an operand from the stack, say it’s s2.
- perform (s1 s2 operator) and push it to stack.
- Once the expression iteration is completed, initialize the result string and pop out from the stack and add it to the result.
- Return the result.
Please walk through the example below for more understanding.
Prefix Expression: *-A/BC-/AKL Postfix Expression: ABC/-AK/L-*