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

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

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote