Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Can anyone please help and explain to me? STAGE 1 | java.util.Stack class public class Stack The Stack class represents a last-in-first-out (LIFO) stack of

Can anyone please help and explain to me?

STAGE 1 | java.util.Stack class public class Stack

The Stack class represents a last-in-first-out (LIFO) stack of objects. It has five operations that allow a stack be manipulated. The usual push and pop operations are provided, as well as a method to peek at the top item on the stack, a method to test for whether the stack is empty, and a method to search the stack for an item and discover how far it is from the top. When a stack is first created, it contains no items.

Constructor Stack() : Create an empty stack Methods

Modifier and Type Method and Description

boolean empty () Tests if this stack is empty.

E peek () Looks at the object at the top of this stack without removing it from the stack.

E pop () Removes the object at the top of this stack and returns that object as the value of this

function.

E push ( E item) Pushes an item onto the top of this stack.

int search ( Object o) Returns the 1-based position where an object is on this stack.

STAGE 2 | PostFix class Create a class called PostFix which can be used to convert an infix expression to postfix

notation.

import java.util.*; public class PostFix {

private Stack opStack; private String postExp;

PostFix(){ opStack = new Stack(); postExp = new String();

}

public String convertToPostfix(String s) {

// Algorithm is same as InfixCalculator. Except, // if operand append to postExp // if op ( *,/,%,+,-) at to of stack has higher or equal precedency, then pop and // append to postExp

}

Infix expression can contain: Blanks Operands : double values Operators : ( ) + - * / %

Operator precedency High 3: * / %

2: + - Low 1: ( )

STAGE 3 | Lab17.java Write a driver program called Lab17.java and convert the following expressions using

PostFix class:

(2 + 3 )* ( 5 - 3 ) 12. + 9.8 * .98 * ( 10.0 / 3 )

Here is infixCalculator:

import java.util.*; public class InfixCalculator { private String infixExp; private Stack opStack;//it can be any object in the stack private Stack valStack;

public InfixCalculator(String exp)//this one will create two stack for you { infixExp=exp; valStack = new Stack(); opStack = new Stack();

} public double evaluate() { infixExp = "( " + infixExp + " )"; String[] tokens = infixExp.split("\\s");//you're creating array for tokens for(int i=0;i { if(Character.isDigit(tokens[i].charAt(0)) || tokens[i].charAt(0)=='.'){ valStack.push(new Double(tokens[i])); continue; } if (tokens[i].charAt(0)=='('){ opStack.push(new Character('(')); // continue; } else if (tokens[i].charAt(0)==')'){ while(opStack.peek().charValue()!='(') execute(); opStack.pop(); // continue; } else{ char ch1=tokens[i].charAt(0); char ch2=opStack.peek().charValue(); if(precedence(ch1) > precedence(ch2)) opStack.push(new Character(ch1)); else { while (precedence(ch1) <= precedence(opStack.peek().charValue())) execute(); opStack.push(new Character(ch1)); } } } return valStack.pop().doubleValue(); } private int precedence(char ch) { switch(ch) { case '*': case '/': return 3; case '+': case '-': return 2; default: return 1; } } private void execute() { double result=0; double op2=valStack.pop().doubleValue(); double op1=valStack.pop().doubleValue(); char op = opStack.pop().charValue(); switch(op) { case '*': result=op1 * op2; break; case '/': result=op1 / op2; break; case '+': result=op1 + op2; break; case '-': result=op1 - op2; break; } valStack.push(new Double(result)); } }

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

Step: 3

blur-text-image

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

Database And Expert Systems Applications 33rd International Conference Dexa 2022 Vienna Austria August 22 24 2022 Proceedings Part 2 Lncs 13427

Authors: Christine Strauss ,Alfredo Cuzzocrea ,Gabriele Kotsis ,A Min Tjoa ,Ismail Khalil

1st Edition

3031124251, 978-3031124259

More Books

Students also viewed these Databases questions

Question

Describe several ways to identify high-potential employees.

Answered: 1 week ago