Question

in Java

In this exercise, you'll write a Java version of the infix-to-postfix conversion algorithm. These same mechanisms can be used as a part of writing a simple compiler.

Write class **InfixToPostfixConverter** co convert
an ordinary infix arithmetic expression (assume a valid expression
is entered) with **single-digit** integers (to make
things easier) such as

(6 + 2) • 5 - 8 / 4

to a postfix expression. The postfix version (no parentheses are needed) of this infix expression is

6 2 + 5 * 8 4 / -

The program should read the expression into StringBuilder or String infix and use the Stack and Stack Interface class (as found in Lesson 8 Programs Classwork) to help create the postfix expression in StringBuuider (or String) postfix. The algorithm for creating a postfix expression is shown below

*Push a left parenthesis ' (' onto the stack.*

*Append a right parenthesis ') ' to the end of
infix.*

*While the stack is not empty, read infix from left to right
and do the following:*

* If the current character in infix
is a digit, append it to postfix.*

* If the current character in infix
is a left parenthesis, push it onto the stack.*

* If the current character in infix
is an operator:*

*
Pop operators (if there are any) at the top of the stack while they
have equal or higher*

*precedence than the current
operator, and append the popped operators to postfix.*

* Push the current character in infix
onto the stack.*

* If the current character in infix
is a right parenthesis:*

*
Pop operators from the top of the stack and append them to postfix
until a left parenthesis is at the top of the stack.*

*
Pop (and discard) the left parenthesis from the stack.*

The following arithmetic operations are allowed in an expression:

^ exponentiation

* multiplication

/ division

% remainder

+ addition

- subtraction

Exponents have the highest precedence, multiplication, division and remainder all share the next highest precedence, and addition and subtraction have the lowest precedence.

Some methods you may want to provide are as follows:

Method **convertToPostfix**, which accepts converts
the infix expression to postfix notation by implementing the
algorithm described above.

Method **is0perator**, which determines whether the
input parameter c is an operator.

Method **precedence,** which determines whether the
precedence of operator1 (from the infix expression) is less than,
equal to or greater than that of operator2 (from the stack). The
method returns true if operator1 has lower precedence than
operator2. Otherwise, false is returned. Precedence is as defined
above.

You will need to use the Stack method peek to perform some of the checks as described above

Answer #1

import java.util.Stack;

class Test

{

// A utility function to return precedence of a given operator

// Higher returned value means higher precedence

static int Prec(char ch)

{

switch (ch)

{

case '+':

case '-':

return 1;

case '*':

case '/':

return 2;

case '^':

return 3;

}

return -1;

}

}

// The main method that converts given infix expression

// to postfix expression.

static String infixToPostfix(String exp)

{

// initializing empty String for result

String result = new String("");

// initializing empty stack

Stack<Character> stack = new Stack<>();

for (int i = 0; i<exp.length(); ++i)

{

char c = exp.charAt(i);

// If the scanned character is an operand, add it to output.

if (Character.isLetterOrDigit(c))

result += c;

// If the scanned character is an '(', push it to the stack.

else if (c == '(')

stack.push(c);

// If the scanned character is an ')', pop and output from the stack

// until an '(' is encountered.

else if (c == ')')

{

while (!stack.isEmpty() && stack.peek() != '(')

result += stack.pop();

if (!stack.isEmpty() && stack.peek() != '(')

return "Invalid Expression"; // invalid expression

else

stack.pop();

}

else // an operator is encountered

{

while (!stack.isEmpty() && Prec(c) <= Prec(stack.peek())){

if(stack.peek() == '(')

return "Invalid Expression";

result += stack.pop();

}

stack.push(c);

}

}

// pop all the operators from the stack

while (!stack.isEmpty()){

if(stack.peek() == '(')

return "Invalid Expression";

result += stack.pop();

}

return result;

}

// Driver method

public static void main(String[] args)

{

String exp = '(6 + 2) • 5 - 8 / 4';

System.out.println(infixToPostfix(exp));

}

}

(For Python)
Evaluating Postfix Arithmetic Expressions. In this project you
are to implement a Postfix Expression Evaluator as described in
section 7-3b of the book. The program should ask the user for a
string that contains a Postfix Expression. It should then use the
string's split function to create a list with each token in the
expression stored as items in the list. Now, using either the stack
classes from 7.2 or using the simulated stack functionality
available in a...

Use the following algorithm:
(1) Create three stacks of characters: stk1, stk2, stk3.
(2) Read the input infix expression one character at a time and
push every character read ( other than ')' ) onto stk1. Do not push
the character read if it is ')'.
(3) As long as stk1 is not empty, do the following:
Fetch the top character ( call it c ) of stk1 and pop stk1.
if
c is an alphabetic character (a-z),...

Something is either messed up in my operator overload <<,
covertopostfix function, or my main output. Cannot figure it out.
please help. Please comment your changes too.
Program below is supposed to be outputting like this:
InFix is: A+B-C
Post fix is: A B + C -
InFix is: A+C
Post fix is: A C +
InFix is: x*(y+z)-(w+t)
Post fix is: x y z + * w t + -
InFix is: A+B*(C+D)-E/F+G+H
Post fix is: A B C...

You are given the following Java files:
TestCharacterStack.java that contains class
LLStack with class stackNode
listed as inner class.
You are given the following Java file:
TestCharacterStack.java inside the class add the
method below:
public boolean
ParenthesesMatching (String text)
takes a string text, and parenthesis whether its parenthesis are
"balanced."
Hint: for left parenthesis, push onto stack;
for right parenthesis, pop from stack and check
whether popped element matches right parenthesis, else return
false.
If returned value is...

Java Please
[(1)] A palindrome is a string that reads the same forwards as
backwards. Using only a fixed number of stacks and queues, the
stack and queue ADT functions, and a fixed number of int and char
variables, write an algorithm to determine if a string is a
palindrome. Assume that the string is read from standard input one
character at a time. The algorithm should output true or false as
appropriate
[(2)] Let Q be a non-empty queue,...

Stack2540Array
import java .io .*;
import java . util .*;
public class Stack2540Array {
int CAPACITY = 128;
int top ;
String [] stack ;
public Stack2540Array () {
stack = new String [ CAPACITY ];
top = -1;
}
1
3.1 Implement the stack ADT using array 3 TASKS
public int size () { return top + 1; }
public boolean isEmpty () { return (top == -1); }
public String top () {
if ( top == -1)...

Code in JAVA
The requirements are as follows:
The input will be in a text file whose name is given by arg[0]
of main().
It will contain a fully-parenthesized infix expression
containing only: "(", ")", "+", "-" and integers.
Need help on the main and fixing the Queue.
//Input:
( ( 1 + 2 ) - ( ( 3 - 4 ) + ( 7 - 2 ) ) )
( ( 1 + 2 ) - ( 3 -...

I've posted this question like 3 times now and I can't seem to
find someone that is able to answer it. Please can someone help me
code this? Thank you!!
Programming Project #4 – Programmer
Jones and the Temple of Gloom
Part 1
The stack data structure plays a pivotal role in the design of
computer games. Any algorithm that requires the user to retrace
their steps is a perfect candidate for using a stack. In this
simple game you...

ADVERTISEMENT

Get Answers For Free

Most questions answered within 1 hours.

ADVERTISEMENT

asked 23 minutes ago

asked 26 minutes ago

asked 47 minutes ago

asked 53 minutes ago

asked 1 hour ago

asked 1 hour ago

asked 1 hour ago

asked 1 hour ago

asked 1 hour ago

asked 1 hour ago

asked 2 hours ago

asked 2 hours ago