Postfix Arithmetic
Postfix arithmetic means that the operator goes after the two numbers. Example; 6 * 7 becomes 6 7 *. A postfix expression can be an operand in another postfix expression: 6 7 * 1 - is equivalent to (6 * 7 ) - 1.
Using the stack class in 'stack:array as storage', we will evaluate a postfix expression.
Postfix pseudocode
foreach token if token is integer push token else if token is operator pop right side value pop left side value evaluate operator push result next
Postfix Calculator
function postFixCalc(expression) { //create new stack let stack = new Stack(); //loop through each character in provided expression for (let idx = 0; idx < expression.length; idx++) { //store each character let token = expression[idx]; //if it's a number, push to stack //else pop right side and left side, perform operation and push to stack if (!isNaN(token)) { stack.push(Number(token)); } else { let rhs = stack.pop(); let lhs = stack.pop(); //if right or left side is not available if (rhs === "UnderFlow" || lhs === "UnderFlow" ) { return "Can't perform postfix calculation"; } switch (token) { case '+': stack.push(lhs + rhs); break; case '-': stack.push(lhs - rhs); break; case '*': stack.push(lhs * rhs); break; case '/': stack.push(lhs / rhs); break; case '%': stack.push(lhs % rhs); break; } } }; //return result of calculation return stack.pop(); }
Sample test code
console.log(postFixCalc('567*+1-'))
The result should be 46 😄.
Thank you for reading!
Top comments (0)