Program To Evaluate Postfix Expression
The Postfix notation is used to represent algebraic expressions. The expressions written in postfix form are evaluated faster compared to infix notation as parenthesis are not required in postfix. We have discussed.
In this post, evaluation of postfix expressions is discussed.Following is algorithm for evaluation postfix expressions.1) Create a stack to store operands (or values).2) Scan the given expression and do following for every scanned element.a) If the element is a number, push it into the stack.b) If the element is a operator, pop operands for the operator from stack. Evaluate the operator and push the result back to the stack3) When the expression is ended, the number in the stack is the final answerExample:Let the given expression be “2 3 1. + 9 -“. We scan all elements one by one.1) Scan ‘2’, it’s a number, so push it to stack. Stack contains ‘2’2) Scan ‘3’, again a number, push it to stack, stack now contains ‘2 3’ (from bottom to top)3) Scan ‘1’, again a number, push it to stack, stack now contains ‘2 3 1’4) Scan ‘.’, it’s an operator, pop two operands from stack, apply the. operator on operands, we get 3.1 which results in 3. We push the result ‘3’ to stack.
C Program To Evaluate Postfix Expression
Stack now becomes ‘2 3’.5) Scan ‘+’, it’s an operator, pop two operands from stack, apply the + operator on operands, we get 3 + 2 which results in 5. We push the result ‘5’ to stack.
Stack now becomes ‘5’.6) Scan ‘9’, it’s a number, we push it to the stack. Stack now becomes ‘5 9’.7) Scan ‘-‘, it’s an operator, pop two operands from stack, apply the – operator on operands, we get 5 – 9 which results in -4. We push the result ‘-4’ to stack. Stack now becomes ‘-4’.8) There are no more elements to scan, we return the top element from stack (which is the only element left in stack). FilternoneOutput: postfix evaluation: -4Time complexity of evaluation algorithm is O(n) where n is number of characters in input expression.There are following limitations of above implementation.1) It supports only 4 binary operators ‘+’, ‘.’, ‘-‘ and ‘/’. It can be extended for more operators by adding more switch cases.2) The allowed operands are only single digit operands.
The program can be extended for multiple digits by adding a separator like space between all elements (operators and operands) of given expression.Below given is the extended program which allows operands having multiple digits.
Prefix and Postfix expressions can be evaluated faster than an infix expression. This is because we don’t need to process any brackets or follow operator precedence rule. In postfix and prefix expressions which ever operator comes before will be evaluated first, irrespective of its priority. Also, there are no brackets in these expressions. As long as we can guarantee that a valid prefix or postfix expression is used, it can be evaluated with correctness.We can convert and can convertIn this article, we will discuss how to evaluate an expression written in prefix notation.
The method is similar to evaluating a postfix expression. Please read to know how to evaluate postfix expressionsAlgorithmEVALUATEPREFIX(STRING)Step 1: Put a pointer P at the end of the endStep 2: If character at P is an operand push it to StackStep 3: If the character at P is an operator pop twoelements from the Stack.