Algorithm for evaluating postfix expressions

Assignment Help JAVA Programming
Reference no: EM13942267

Question 1

Implement an array-based abstract data type 'stack' specified in class and do the following:

Write a procedure called read_and_evaluate_expression that reads in and evaluates a postfix expression (defined below) and writes out its value. (JAVA)

Your procedure must follow the algorithm sketched below, and it must use your implementation of abstract `stacks'. But the procedure should not depend on the details of your particular implementation -the procedure should depend only on the specification of abstract `stacks' and therefore should work with any implementation of the specification (The TAs might check this by using their own stack implementation instead of yours).

The main program is a loop that calls read_and_evaluate_expression repeatedly. After evaluating an expression, it should ask the user if he want to quit (YES) or not (NO, to continue to evaluate a new expression).
3. Postfix Expressions

A postfix expression has the form X1 X2 X3 ... Xn where each of the Xi is either a single digit (0...9) or one of the following binary operators: +, -, *, / (the operator / means integer division).

We adopt the convention that a postfix expression fits entirely on 1 line of input. In other words, the newline character, written 'n' in Java, indicates the end of the expression.
Should you find it convenient, you may also assume that X1 is the first character on the line, and that each Xi is separated from the next by exactly one space (i.e. ' ' in Java).

The expression is postfix because an operator is written after its two operands. For example, the normal (infix) expression 2+3 would be written 2 3 + in postfix. Postfix has the advantage that parentheses are never needed. In infix, one expression (e.g. 2+3*4) can have several possible meanings (e.g. (2+3) *4 and 2+(3*4)) and parentheses (or precedence conventions) are needed in order to distinguish among the possible meanings. In postfix, each expression has a unique meaning. For example, (2+3) *4 would be 2 3 + 4 * in postfix, whereas 2+(3*4) would be 2 3 4 * +.

4. Algorithm for evaluating postfix expressions (Sketch)

There is one stack for holding operands, called NumStk, which is initially empty.
● Read in the next digit or operator.
● Whenever you read a digit, push it onto the NumStk stack.
● When you read in an operator - let's call it op - since it is a binary operator, it requires two arguments:
❍ Remove the first two numbers from NumStk; call the first one removed R and the second one L.
❍ Evaluate L op R and push the result onto NumStk.
● Ignore any blank space. If in fact we find a newline character, then we have reached the end of the expression. It should now be fully evaluated, and the resulting value must be on top of numbers. We write it out and return.

Example: input line is 2 3 4 * + 5 ¬
● read '2', push it onto NumStk.
● read following space.
● read '3', push it onto NumStk.
● read following space.
● read '4', push it onto NumStk.
● read following space.
● read '*'. Pop NumStk: R=4. Pop NumStk: L=3. L op R = 3 * 4 evaluates to 12. Push 12 onto NumStk.
● read following space.
● read '+'. Pop NumStk: R=12. Pop NumStk: L=2. L op R = 2 + 12 evaluates to 14. Push 14 onto NumStk.
● read following space.
● read '5'. Push it onto NumStk.
● read following space.
● read '-'. Pop NumStk: R=5. Pop NumStk: L=14. L op R = 14 - 5 evaluates to 9. Push 9 onto NumStk.
● read newline character. Pop NumStk to get final answer 9 and write it out.

4. Question 2

Analyze your read_and_evaluate_expression algorithm and give its running time in Big-Oh notation.

5. Question 3

Repeat question 1 using a linked list implementation of the abstract data 'stack'.

6. Question 4

Analyze your algorithm in question 3 and give the Big-Oh notation.

Reference no: EM13942267

Questions Cloud

Gathers data on fifty graduate students : A researcher wants to predict graduate-school grade point average (GPA) from GRE verbal scores (which is what the pesky GRE is supposed to do, anyway!). She gathers data on fifty graduate students. Below are the data "high points":
Which is best describes prewriting : When you are thinking about audience when considering the writing situation, which of the following questions might you not consider?
Research question for a correlational study : Which of the following is an example of a good research question for a correlational study?
What are the main challenges to the change of mindset : What are the main challenges to the change of mindset required to extend BI tools beyond mere reporting? What can companies do to overcome them? Use examples from the case to illustrate your answer?
Algorithm for evaluating postfix expressions : Should you find it convenient, you may also assume that X1 is the first character on the line, and that each Xi is separated from the next by exactly one space
Balance sheet equation : balance sheet equation format to show the effect
Calculate the standard error for the predicted gpa : A researcher wants to predict graduate-school grade point average (GPA) from GRE verbal scores (which is what the pesky GRE is supposed to do, anyway!). She gathers data on fifty graduate students. Below are the data "high points":
Coupon rate and the market rate are equal : if the coupon rate and the market rate are equal, the bond will be issued at par.  if the coupon rate is less than the market rate , the bond will be issued at discount.
How training practices could be improved : Provide appropriate recommendations to the Director of the chosen organisation as to how those training practices could be improved and what the benefits would be to the company by improving them.

Reviews

Write a Review

JAVA Programming Questions & Answers

  Create java program to simulate the operation of a bank atm

write a Java program to simulate the operation of a bank ATM (cashpoint) system for payment and deposit on an account. In order to make the system fairly simple there is only one bank account and there are 5 cards that can be used to deposit or wi..

  Evaluate the rtas resource requirements

Design and implement a set of classes and interfaces and use them to evaluate the RTA's resource requirements.

  Determine the length of a string

Determine the length of a string. The first version should use array subscripting, and the second version should use pointer arithmetic

  Write a program that prompts the user to input a string

Write a program that prompts the user to input a string. The program then uses the function substr to remove all the vowels from the string.

  A program called invoice that will prompt the user for items

write a program called invoice that will prompt the user for items on and invoice and then print the total of the invoice

  What can a catch block do with the exception object

What can a catch block do with the exception object that it receives and write lines of code to create object input and output streams for the file c:\temp\mydata.out

  Implements the queue interface

Element from an ArrayList is slow because of all the shifting. For this question, you should modify the poll()method so that it runs in constant time - implementations as well as correct/fast implementations. In the former case, your functions may..

  Construct a huffman code tree

Draw the tree that would be formed by inserting the words in this question into a binary search tree and construct a Huffman code tree. Show the initial priority queue and all changes in its state as the tree is constructed.

  Determine the output displayed when the button is clicked

Determine the output displayed when the button is clicked. Assume the five lines of the file Dates.txt contain the numbers 1492, 1776, 1812, 1929, and 1941 and the file is in the appropriate folder.

  Consider the following conditions

Consider the following conditions: An enqueuer waiting on a full-queue or a dequeuer waiting on an empty queue sleep indefinitely, unless woken up by another thread. A thread must send a signal ONLY when it adds an element to an empty queue or remove..

  Write a program that reads customers information

Write a program that reads customers' information from a file, and creates a movie theatre seating with a number of rows and columns specified by a user. Then it will attempt to assign each customer to a seat in a movie theatre.

  Die class that can hold an integer

Design a die class that can hold an integer from 1 to 6. use the dice class to create a dice game. in this game, the user chooses a number between 2 and 12 inclusive

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd