Question: JAVA ILL GIVE U ALL THE IMPLEMENTATION JUST WRITE METHOD ONLY Write a method stackShuffle to be outside ArrayStack class that accepts two parametrers s1
JAVA ILL GIVE U ALL THE IMPLEMENTATION JUST WRITE METHOD ONLY
Write a method stackShuffle to be outside ArrayStack class that accepts two parametrers s1 of type ArrayStack and value of type E. The method is going to reshuffle s1 in a way that the shuffling will be in according to the following criteria:
If the element in the stack is greater than the value, it will be in the first half of the stack, otherwise, it will be in the second half of the stack (direction is starting from the top and go down as shown in the example after the method call).
The method returns false if stack is empty, otherwise, it returns true.
The method title is
public static
Ex:
Before method call
S1
top
23 45 13 67 22 5 14 77
value is 40
After method call
S1
top
45 67 77 23 13 22 5 14
public static
{}
import java.util.NoSuchElementException;
/** Implementation of the interface StackInt using an array. The
* bottom element of the stack is in location 0 in the array.
*/
public class ArrayStack
{
// Data Fields
private E[ ] theData; // array to store stack elements
/** Index of top of the stack. */
private int topOfStack; // index of stack top.
private static final int INITIAL_CAPACITY = 10;
/**
* Construct an empty stack with the default initial capacity.
*/
public ArrayStack()
{
topOfStack = -1; // Initially empty stack.
theData = (E[]) new Object[INITIAL_CAPACITY];
}
/**
* Construct an empty stack with the initial capacity equal to
* parameter cap.
* @param cap The initial capacity of the stack
*/
public ArrayStack(int cap)
{
topOfStack = -1; // Initially empty stack.
if (cap <= 0 )
cap = INITIAL_CAPACITY;
theData = (E[]) new Object[cap];
}
/** Copy constructor Construct a new stack as copy of the existing
* stack passed as parameter.
* @param other The original stack
* copy is made in this object
*/
public ArrayStack (ArrayStack
{
theData = (E[]) new Object[other.topOfStack + 1];
for (int i = 0; i < other.topOfStack + 1; i++)
theData[i]= other.theData[i];
topOfStack = other.topOfStack;
}
/**
* Insert a new item on top of the stack.
* @post The new item is the top item on the stack.
* @param obj The item to be inserted
* @return The item that was inserted
*/
@Override
public E push(E obj)
{
if (topOfStack == theData.length - 1) {
reallocate();
}
topOfStack++;
theData[topOfStack] = obj;
return obj;
}
/**
* Remove and return the top item on the stack.
* @pre The stack is not empty.
* @post The top item on the stack has been removed and
* the stack is one item smaller.
* @return The top item on the stack
* @throws NoSuchElementException, if the stack is empty
*/
@Override
public E pop()
{
if (isEmpty()) {
throw new NoSuchElementException();
}
E result = theData[topOfStack];
theData[topOfStack] = null;
topOfStack--;
return result;
}
/**
* Return the top item on the stack
* Pre: The stack is not empty
* Post: The stack remains unchanged
* @return The top item on the stack
* @throws NoSuchElementException, if the stack is empty
*/
@Override
public E peek()
{
if (isEmpty()) {
throw new NoSuchElementException();
}
return theData[topOfStack];
}
/**
* Return true if the stack is empty
* @return True if the stack is empty
*/
@Override
public boolean isEmpty()
{
return (topOfStack == -1);
}
/**
* Method to reallocate the array containing the stack data
* @post The size of the data array has been doubled
* and all of the data has been copied to the new array
*/
private void reallocate() {
E[] temp = (E[]) new Object[2 * theData.length];
System.arraycopy(theData, 0, temp, 0, theData.length);
theData = temp;
}
} //end ArrayStack
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
