Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

please need help with this exercise data structure: i should use the below code

ID: 3775750 • Letter: P

Question

please need help with this exercise data structure:

i should use the below code for infix to postfix code and i should add the bellow question to the code. so that way it works all together on the same program from the infix to postfix

questions:

A = 3; // your code should store A and 3 as a key-value pair
B = 4; // your code should store B and 4 as a key-value pair
A; // your code should now look-up A and then display its value

later we (you) will add the ability to write

Y = A * B + 3;

Y; // your code should show 16

the code:

import java.io.*; // for I/O

////////////////////////////////////////////////////////////////

class StackX {

      private int maxSize;

      private char[] stackArray;

      private int top;

      // --------------------------------------------------------------

      public StackX(int s) // constructor

      {

            maxSize = s;

            stackArray = new char[maxSize];

            top = -1;

      }

      // --------------------------------------------------------------

      public void push(char j) // put item on top of stack

      {

            stackArray[++top] = j;

      }

      // --------------------------------------------------------------

      public char pop() // take item from top of stack

      {

            return stackArray[top--];

      }

      // --------------------------------------------------------------

      public char peek() // peek at top of stack

      {

            return stackArray[top];

      }

      // --------------------------------------------------------------

      public boolean isEmpty() // true if stack is empty

      {

            return (top == -1);

      }

      // -------------------------------------------------------------

      public int size() // return size

      {

            return top + 1;

      }

      // --------------------------------------------------------------

      public char peekN(int n) // return item at index n

      {

            return stackArray[n];

      }

      // --------------------------------------------------------------

      public void displayStack(String s) {

            System.out.print(s);

            System.out.print("Stack (bottom-->top): ");

            for (int j = 0; j < size(); j++) {

                  System.out.print(peekN(j));

                  System.out.print(' ');

            }

            System.out.println(" ");

      }

      // --------------------------------------------------------------

} // end class StackX

      ////////////////////////////////////////////////////////////////

class InToPost // infix to postfix conversion

{

      private StackX theStack;

      private String input;

      private String output = "";

      // --------------------------------------------------------------

      public InToPost(String in) // constructor

      {

            input = in;

            int stackSize = input.length();

            theStack = new StackX(stackSize);

      }

      // --------------------------------------------------------------

      public String doTrans() // do translation to postfix

      {

            for (int j = 0; j < input.length(); j++) {

                  char ch = input.charAt(j);

                  theStack.displayStack("For " + ch + " "); // *diagnostic*

                  switch (ch) {

                  case '+': // it’s + or -

                  case '-':

                        gotOper(ch, 1); // go pop operators

                        break; // (precedence 1)

                  case '*': // it’s * or /

                  case '/':

                        gotOper(ch, 2); // go pop operators

                        break; // (precedence 2)

                  case '(': // it’s a left paren

                        theStack.push(ch); // push it

                        break;

                  case ')': // it’s a right paren

                        gotParen(ch); // go pop operators

                        break;

                  default: // must be an operand

                        output = output + ch; // write it to output

                        break;

                  } // end switch

            } // end for

            while (!theStack.isEmpty()) // pop remaining opers

            {

                  theStack.displayStack("While "); // *diagnostic*

                  output = output + theStack.pop(); // write to output

            }

            theStack.displayStack("End "); // *diagnostic*

            return output; // return postfix

      } // end doTrans()

            // --------------------------------------------------------------

      public void gotOper(char opThis, int prec1) { // got operator from input

            while (!theStack.isEmpty()) {

                  char opTop = theStack.pop();

                  if (opTop == '(') // if iy’s a ‘(‘

                  {

                        theStack.push(opTop); // restore ‘(‘

                        break;

                  } else // it’s an operator

                  {

                        int prec2; // precedence of new op

                        if (opTop == '+' || opTop == '-') // find new op prec

                              prec2 = 1;

                        else

                              prec2 = 2;

                        if (prec2 < prec1) // if prec of new op less

                        { // than prec of old

                              theStack.push(opTop); // save newly-popped op

                              break;

                        } else // prec of new not less

                              output = output + opTop; // than prec of old

                  } // end else (it’s an operator)

            } // end while

            theStack.push(opThis); // push new operator

      } // end gotOp()

            // --------------------------------------------------------------

      public void gotParen(char ch) { // got right paren from input

            while (!theStack.isEmpty()) {

                  char chx = theStack.pop();

                  if (chx == '(') // if popped ’(‘

                        break; // we’re done

                  else // if popped operator

                        output = output + chx; // output it

            } // end while

      } // end popOps()

            // --------------------------------------------------------------

} // end class InToPost

      ////////////////////////////////////////////////////////////////

class InfixApp {

      public static void main(String[] args) throws IOException {

            String input, output;

            while (true) {

                  System.out.print("Enter infix: ");

                  System.out.flush();

                  input = getString(); // read a string from kbd

                  if (input.equals("")) // quit if [Enter]

                        break;

                  // make a translator

                  InToPost theTrans = new InToPost(input);

                  output = theTrans.doTrans(); // do the translation

                  System.out.println("Postfix is " + output + ' ');

            } // end while

      } // end main()

            // --------------------------------------------------------------

      public static String getString() throws IOException {

            InputStreamReader isr = new InputStreamReader(System.in);

            BufferedReader br = new BufferedReader(isr);

            String s = br.readLine();

            return s;

      }

      // --------------------------------------------------------------

} // end class InfixApp

      ////////////////////////////////////////////////////////////////

Explanation / Answer

import java.io.IOException;

public class InToPost {
private Stack theStack;
private String input;
private String output = "";
public InToPost(String in) {
input = in;
int stackSize = input.length();
theStack = new Stack(stackSize);
}
public String doTrans() {
for (int j = 0; j < input.length(); j++) {
char ch = input.charAt(j);
switch (ch) {
case '+':
case '-':
gotOper(ch, 1);
break;
case '*':
case '/':
gotOper(ch, 2);
break;
case '(':
theStack.push(ch);
break;
case ')':
gotParen(ch);
break;
default:
output = output + ch;
break;
}
}
while (!theStack.isEmpty()) {
output = output + theStack.pop();
}
System.out.println(output);
return output;
}
public void gotOper(char opThis, int prec1) {
while (!theStack.isEmpty()) {
char opTop = theStack.pop();
if (opTop == '(') {
theStack.push(opTop);
break;
}
else {
int prec2;
if (opTop == '+' || opTop == '-')
prec2 = 1;
else
prec2 = 2;
if (prec2 < prec1) {
theStack.push(opTop);
break;
}
       else
output = output + opTop;
}
}
theStack.push(opThis);
}
public void gotParen(char ch){
while (!theStack.isEmpty()) {
char chx = theStack.pop();
if (chx == '(')
break;
else
output = output + chx;
}
}
public static void main(String[] args)
throws IOException {
String input = "1+2*4/5-7+3/6";
String output;
InToPost theTrans = new InToPost(input);
output = theTrans.doTrans();
System.out.println("Postfix is " + output + ' ');
}
class Stack {
private int maxSize;
private char[] stackArray;
private int top;
public Stack(int max) {
maxSize = max;
stackArray = new char[maxSize];
top = -1;
}
public void push(char j) {
stackArray[++top] = j;
}
public char pop() {
return stackArray[top--];
}
public char peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
}
}