Two stacks are the same if they have the same size and theirelements at the corresponding positions are the same. Add themethod equalStack to Class StackClass that takes as a parameter aStackClass object, say otherStack and return true if the stack isthe same as otherStack. Also write the definition of methodequalStack and a program to test your method. In StackClass.java,please finish method – public boolean equalStack(StackClassotherStack) and testing main program – StackProblem.java.
******************************************************************************************************************************************************************************
public class StackProblem {
public static void main(String[] args) {
StackClass intStack = new StackClass(50);
StackClass tempStack = new StackClass(50);
}
}
******************************************************************************************************************************************************************************
public class StackUnderflowException extends StackException{
public StackUnderflowException() {
super(“Stack Underflow”);
}
public StackUnderflowException(String msg) {
super(msg);
}
}
******************************************************************************************************************************************************************************
public interface StackADT<T> {
public void initializeStack();
//Method to initialize the stack to an empty state.
public boolean isEmptyStack();
//Method to determine whether the stack is empty. Postcondition:Returns true if the stack is empty. Otherwise, returns false.
public boolean isFullStack();
//Method to determine whether the stack is full. Postcondition:Returns true if the stack is full. Otherwise, returns false.
public void push(T newItem) throws StackOverflowException;
//Method to add newItem to the stack.
//Precondition: The stack exists and is not full.
//Postcondition: The stack is changed and newItem is added tothe top of stack.
// If the stack is full, the method throwsStackOverflowException.
public T peek() throws StackUnderflowException;
//Method to return a reference to the top element of thestack.
//Precondition: The stack exists and is not empty.
//Postcondition: If the stack is empty, the method throwsStackUnderflowException.
//Otherwise, a reference to the top element of the stack isreturned.
public void pop() throws StackUnderflowException;
//Method to remove the top element of the stack.
//Precondition: The stack exists and is not empty.Postcondition: The stack is changed and the top element is removedfrom the stack.
// If the stack is empty, the method throwsStackUnderflowException.
}
******************************************************************************************************************************************************************************
public class StackClass implements StackADT {
private int maxStackSize; //variable to store the maximum stacksize
private int stackTop; //variable to point to the top of thestack
private T[] list; //array of reference variables
//Default constructor
//Create an array of size 100 to implement the stack.
//Postcondition: The variable list contains the base address ofthe array, stackTop = 0, and maxStackSize = 100.
public StackClass() {
maxStackSize = 100;
stackTop = 0; //set stackTop to 0
list = (T[]) new Object[maxStackSize]; //create the array
}//end default constructor
//Constructor with a parameter
//Create an array of size stackSize to implement the stack.
//Postcondition: The variable list contains the base address ofthe array, stackTop = 0, and maxStackSize = stackSize.
public StackClass(int stackSize) {
if (stackSize <= 0) {
System.err.println(“The size of the array to ” + “implement thestack must be ” + “positive.”);
System.err.println(“Creating an array of size 100.”);
maxStackSize = 100;
}
else
maxStackSize = stackSize; //set the stack size to the valuespecified by the parameter stackSize
stackTop = 0; //set stackTop to 0
list = (T[]) new Object[maxStackSize]; //create the array
}//end constructor
//Method to initialize the stack to an empty state.
//Postcondition: stackTop = 0
public void initializeStack() {
for (int i = 0; i < stackTop; i++)
list[i] = null;
stackTop = 0;
}//end initializeStack
//Method to determine whether the stack is empty. Postcondition:Returns true if the stack is empty. Otherwise, returns false.
public boolean isEmptyStack() {
return (stackTop == 0);
}//end isEmptyStack
//Method to determine whether the stack is full. Postcondition:Returns true if the stack is full. Otherwise, returns false.
public boolean isFullStack() {
return (stackTop == maxStackSize);
}//end isFullStack
//Method to add newItem to the stack. Precondition: The stackexists and is not full. Postcondition: The stack is changed andnewItem is added to the top of stack.
//If the stack is full, the method throwsStackOverflowException
public void push(T newItem) throws StackOverflowException {
if (isFullStack())
throw new StackOverflowException();
list[stackTop] = newItem; //add newItem at the
//top of the stack
stackTop++; //increment stackTop
}//end push
//Method to return a reference to the top element of thestack.
//Precondition: The stack exists and is not empty.Postcondition: If the stack is empty, the method throwsStackUnderflowException. Otherwise, a reference to the top elementof the stack is returned.
public T peek() throws StackUnderflowException {
if (isEmptyStack())
throw new StackUnderflowException();
return (T) list[stackTop – 1];
}//end peek
//Method to remove the top element of the stack.
//Precondition: The stack exists and is not empty.
//Postcondition: The stack is changed and the top
// element is removed from the stack.
// If the stack is empty, the method
// throws StackUnderflowException
public void pop() throws StackUnderflowException {
if (isEmptyStack())
throw new StackUnderflowException();
stackTop–; //decrement stackTop
list[stackTop] = null;
}//end pop
public boolean equalStack(StackClass otherStack) {
boolean isEqual = true;
} //end equalStack
Expert Answer
Answer to Two stacks are the same if they have the same size and their elements at the corresponding positions are the same. Add t…