Java Homework Help Data Structures and Algorithms 6th Edition Program consists o
ID: 3597164 • Letter: J
Question
Java Homework Help
Data Structures and Algorithms 6th Edition
Program consists of 2 ADT's. Double Stack and Leaky Stack ADT's.
Program requirements
Double Stack ADT
Design and implement an ADT for a two-color, double stack ADT that consists of two stacks – one “red” and one “blue” – and has as its operations color-coded versions of the regular Stack ADT operations.
For example, this ADT should support both a redPush and a bluePush operation.
Write the generic interface for this DoubleStack ADT.
Give an efficient generic static implementation of this ADT using a single array as the container whose capacity is set at some value N that is assumed to always be larger than the sizes of the red and blue stacks combined.
Provide a test of your DoubleStack that clearly shows that all of the methods work correctly.
Leaky Stack ADT
When a push is invoked on a LeakyStack at full capacity, rather than throwing an exception, accept the pushed element at the top while “leaking” the oldest element from the bottom of the stack to make room.
Write the generic interface for this LeakyStack ADT.
Give an efficient static implementation of the LeakyStack abstraction.
Provide a test of your LeakyStack that clearly shows that all of the methods work correctly.
Explanation / Answer
Please find my implementation for DoubleStack.
Please repost other in separate post.
public class DoubleStack<T>
{
private int capacity;
private int topR, topB;
private T arr[];
// Constructor
DoubleStack(int n)
{
arr = (T[])new Object[n];
capacity = n;
topR = -1;
topB = capacity;
}
// Method to push an element x to Red stack
void pushR(T x)
{
// There is at least one empty space for
// new element
if (topR < topB - 1)
{
topR++;
arr[topR] = x;
}
else
{
System.out.println("Stack Overflow");
System.exit(1);
}
}
// Method to push an element x to Blue Stack
void pushB(T x)
{
// There is at least one empty space for
// new element
if (topR < topB -1)
{
topB--;
arr[topB] = x;
}
else
{
System.out.println("Stack Overflow");
System.exit(1);
}
}
// Method to pop an element from Red stack
T popR()
{
if (topR >= 0)
{
T x = arr[topR];
topR--;
return x;
}
else
{
System.out.println("Stack Underflow");
System.exit(1);
}
return null;
}
// Method to pop an element from Blue stack
T popB()
{
if(topB < capacity)
{
T x =arr[topB];
topB++;
return x;
}
else
{
System.out.println("Stack Underflow");
System.exit(1);
}
return null;
}
// Driver program to test twoStack class
public static void main(String args[])
{
DoubleStack<Integer> ts = new DoubleStack<>(5);
ts.pushR(5);
ts.pushB(10);
ts.pushB(15);
ts.pushR(11);
ts.pushR(7);
System.out.println("Popped element from" +
" stack1 is " + ts.popR());
ts.pushB(40);
System.out.println("Popped element from" +
" stack2 is " + ts.popB());
}
}
/*
Sample run:
Popped element from stack1 is 7
Popped element from stack2 is 40
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.