Answered step by step
Verified Expert Solution
Link Copied!
Question
1 Approved Answer

Q3 - 20 pts) You are given the code (including the main function) for evaluating an expression in post-fix format using Stack. Your task is

Q3 - 20 pts) You are given the code (including the main function) for evaluating an expression in post-fix format using Stack. Your task is to modify the code in the main function to input an expression in pre-fix format, reverse it (as discussed in class) and then evaluate the value of the reversed expression (scanned from left to right) using Stack. You test your code with an expression string in pre-fix format that comprises of all the four operators (at least once) in a randomly chosen order with randomly chosen values in the range 1 to 9. For example, a sample expression string (pre-fix notation) could be input as 8, 4, 3, 2, 5, /, *, +, - for the expression (infix-notation) 5 / 2 * 3 + 4 - 8.

The code is: import java.util.*; class Node{ private int data; private Node nextNodePtr; public Node(){} public void setData(int d){ data = d; } public int getData(){ return data; } public void setNextNodePtr(Node nodePtr){ nextNodePtr = nodePtr; } public Node getNextNodePtr(){ return nextNodePtr; } } class Stack{ private Node headPtr; public Stack(){ headPtr = new Node(); headPtr.setNextNodePtr(null); } public Node getHeadPtr(){ return headPtr; } public boolean isEmpty(){ if (headPtr.getNextNodePtr() == null) return true; return false; } public void push(int data){ Node currentNodePtr = headPtr.getNextNodePtr(); Node prevNodePtr = headPtr; while (currentNodePtr != null){ prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr.getNextNodePtr(); } Node newNodePtr = new Node(); newNodePtr.setData(data); newNodePtr.setNextNodePtr(null); prevNodePtr.setNextNodePtr(newNodePtr); } public int peek(){ Node currentNodePtr = headPtr.getNextNodePtr(); Node prevNodePtr = headPtr; if (currentNodePtr == null){ return -1000000; // stack is empty } while (currentNodePtr.getNextNodePtr() != null) currentNodePtr = currentNodePtr.getNextNodePtr(); return currentNodePtr.getData(); } public int pop(){ Node currentNodePtr = headPtr.getNextNodePtr(); Node prevNodePtr = headPtr; if (currentNodePtr == null){ return -1000000; // stack is empty } while (currentNodePtr.getNextNodePtr() != null){ prevNodePtr = currentNodePtr; currentNodePtr = currentNodePtr.getNextNodePtr(); } prevNodePtr.setNextNodePtr(null); return currentNodePtr.getData(); } } class SinglyLinkedListBasedStack{ public static void main(String[] args){ Stack stack = new Stack(); String expression; Scanner input = new Scanner(System.in); System.out.print("Enter the expression to evaluate: "); expression = input.nextLine(); StringTokenizer stk = new StringTokenizer(expression, ", "); while (stk.hasMoreTokens()){ String token = stk.nextToken(); boolean isOperator = false; if ( (token.equals("*")) || (token.equals("/")) || (token.equals("+")) || (token.equals("-")) ) isOperator = true; if (!isOperator){ int val = Integer.parseInt(token); stack.push(val); } if (isOperator){ int rightOperand = stack.pop(); int leftOperand = stack.pop(); if (token.equals("*")){ int result = leftOperand * rightOperand; System.out.println("intermediate result: " + leftOperand + "*" + rightOperand + "=" + result); stack.push(result); } else if (token.equals("/")){ int result = leftOperand / rightOperand; System.out.println("intermediate result: " + leftOperand + "/" + rightOperand + "=" + result); stack.push(result); } else if (token.equals("+")){ int result = leftOperand + rightOperand; System.out.println("intermediate result: " + leftOperand + "+" + rightOperand + "=" + result); stack.push(result); } else if (token.equals("-")){ int result = leftOperand - rightOperand; System.out.println("intermediate result: " + leftOperand + "-" + rightOperand + "=" + result); stack.push(result); } } } System.out.println("final result: " + stack.pop() ); } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image
Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Pro Database Migration To Azure Data Modernization For The Enterprise

Authors: Kevin Kline, Denis McDowell, Dustin Dorsey, Matt Gordon

1st Edition

1484282299, 978-1484282298

More Books

Students explore these related Databases questions