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

This is in java and needed a communt. The question is below this line and it has

ID: 3669888 • Letter: T

Question

This is in java and needed a communt.

The question is below this line and it has two class.

Task 1:

You will modify the add method in the LinkedBag class.

Add a second parameter to the method header that will be a boolean variable:

                public boolean add(T newEntry, boolean sorted)

The modification to the add method will make it possible to add new entries to the beginning of the list, as it does now, but also to add new entries in sorted order. The sorted parameter if set to false will result in the existing functionality being executed (it will add the new element to the beginning of the list), if set to true the new element will be inserted into the list such that the list is in sorted order.

So for example if these are the current entries in the list:

                5 -> 8 -> 10 -> 16 -> 25

And the new entry that I want to put into the list is 14, it will put it into the list between 10 and 16:

                5 -> 8 -> 10 -> 14 -> 16 -> 25

Remember, this is a generic class so it needs to be able to process any kind of object, just as it does now.

Task 2:

You will need to modify the add method header in the BagInterface class also to include the new parameter.

Task 3:

Create a test program to thoroughly test the add method. Name this file LinkedBagTester.java.

Part of this assignment is to create test cases that test all possible conditions of adding data into the list to verify that the new entry will get placed into the correct place in the list. Also, you need to test the conditions of adding elements only to the beginning of the list so that you verify that your changes did not break the existing functionality.

/

/

/

/

This is the first class

/**
   An interface that describes the operations of a bag of objects.
   @author Frank M. Carrano
   @author Timothy M. Henry
   @version 4.1
*/
public interface BagInterface<T>
{
/** Gets the current number of entries in this bag.
   @return The integer number of entries currently in the bag. */
public int getCurrentSize();

/** Sees whether this bag is empty.
   @return True if the bag is empty, or false if not. */
public boolean isEmpty();

/** Adds a new entry to this bag.
     @param newEntry The object to be added as a new entry.
     @return True if the addition is successful, or false if not. */
public boolean add(T newEntry);

/** Removes one unspecified entry from this bag, if possible.
       @return Either the removed entry, if the removal.
                was successful, or null. */
public T remove();
  
/** Removes one occurrence of a given entry from this bag.
       @param anEntry The entry to be removed.
       @return True if the removal was successful, or false if not. */
   public boolean remove(T anEntry);

/** Removes all entries from this bag. */
public void clear();

/** Counts the number of times a given entry appears in this bag.
   @param anEntry The entry to be counted.
   @return The number of times anEntry appears in the bag. */
public int getFrequencyOf(T anEntry);

/** Tests whether this bag contains a given entry.
   @param anEntry The entry to locate.
   @return True if the bag contains anEntry, or false if not. */
public boolean contains(T anEntry);
  
/** Retrieves all entries that are in this bag.
   @return A newly allocated array of all the entries in the bag.
                Note: If the bag is empty, the returned array is empty. */
public T[] toArray();
// public <T> T[] toArray(); // Alternate
// public Object[] toArray(); // Alternate

   /** Creates a new bag that combines the contents of this bag
       and anotherBag.
       @param anotherBag The bag that is to be added.
       @return A combined bag. */
   // public BagInterface<T> union(BagInterface<T> anotherBag);
  
   /** Creates a new bag that contains those objects that occur
       in both this bag and anotherBag.
       @param anotherBag The bag that is to be compared.
       @return A combined bag. */
   // public BagInterface<T> intersection(BagInterface<T> anotherBag);
  
   /** Creates a new bag of objects that would be left in this bag
       after removing those that also occur in anotherBag.
       @param anotherBag The bag that is to be removed.
       @return A combined bag. */
   // public BagInterface<T> difference(BagInterface<T> anotherBag);
} // end BagInterface

/

/

/

/

/

This the second class.

/**
   A class of bags whose entries are stored in a chain of linked nodes.
The bag is never full.
   @author Frank M. Carrano
   @author Timothy M. Henry
   @version 4.1
*/
public final class LinkedBag<T> implements BagInterface<T>
{
private Node firstNode;       // Reference to first node
private int numberOfEntries;

public LinkedBag()
{
  firstNode = null;
      numberOfEntries = 0;
} // end default constructor

/** Sees whether this bag is empty.
     @return True if this bag is empty, or false if not. */
public boolean isEmpty()
{
  return numberOfEntries == 0;
} // end isEmpty

/** Gets the number of entries currently in this bag.
     @return The integer number of entries currently in this bag. */
public int getCurrentSize()
{
  return numberOfEntries;
} // end getCurrentSize

/** Adds a new entry to this bag.
     @param newEntry The object to be added as a new entry
     @return True if the addition is successful, or false if not. */
public boolean add(T newEntry)        // OutOfMemoryError possible
{
      // Add to beginning of chain:
  Node newNode = new Node(newEntry);
  newNode.next = firstNode; // Make new node reference rest of chain
                                // (firstNode is null if chain is empty)       
      firstNode = newNode;      // New node is at beginning of chain
  numberOfEntries++;
     
  return true;
} // end add

/** Retrieves all entries that are in this bag.
     @return A newly allocated array of all the entries in this bag. */
public T[] toArray()
{
      // The cast is safe because the new array contains null entries
      @SuppressWarnings("unchecked")
      T[] result = (T[])new Object[numberOfEntries]; // Unchecked cast

      int index = 0;
      Node currentNode = firstNode;
      while ((index < numberOfEntries)&& (currentNode != null))
      {
         result[index] = currentNode.data;
         index++;
         currentNode = currentNode.next;
      } // end while
     
  return result;
} // end toArray

/** Counts the number of times a given entry appears in this bag.
   @param anEntry The entry to be counted.
   @return The number of times anEntry appears in this bag. */
public int getFrequencyOf(T anEntry)
{
  int frequency = 0;

      int counter = 0;
      Node currentNode = firstNode;
      while ((counter < numberOfEntries) && (currentNode != null))
      {
         if (anEntry.equals(currentNode.data))
         {
            frequency++;
         } // end if
        
         counter++;
         currentNode = currentNode.next;
      } // end while

  return frequency;
} // end getFrequencyOf

/** Tests whether this bag contains a given entry.
   @param anEntry The entry to locate.
   @return True if the bag contains anEntry, or false otherwise. */
public boolean contains(T anEntry)
{
      boolean found = false;
      Node currentNode = firstNode;
     
      while (!found && (currentNode != null))
      {
         if (anEntry.equals(currentNode.data))
            found = true;
         else
            currentNode = currentNode.next;
      } // end while
     
      return found;
   } // end contains
  
  // Locates a given entry within this bag.
// Returns a reference to the node containing the entry, if located,
// or null otherwise.
private Node getReferenceTo(T anEntry)
{
  boolean found = false;
  Node currentNode = firstNode;
  
  while (!found && (currentNode != null))
  {
   if (anEntry.equals(currentNode.data))
    found = true;
   else
    currentNode = currentNode.next;
  } // end while
    
  return currentNode;
} // end getReferenceTo

   /** Removes all entries from this bag. */
public void clear()
{
  while (!isEmpty())
         remove();
} // end clear

/** Removes one unspecified entry from this bag, if possible.
       @return Either the removed entry, if the removal
                was successful, or null. */
public T remove()
{
  T result = null;
      if (firstNode != null)
      {
         result = firstNode.data;
         firstNode = firstNode.next; // Remove first node from chain
         numberOfEntries--;
      } // end if

  return result;
} // end remove

/** Removes one occurrence of a given entry from this bag, if possible.
       @param anEntry The entry to be removed.
       @return True if the removal was successful, or false otherwise. */
   public boolean remove(T anEntry)
{
  boolean result = false;
      Node nodeN = getReferenceTo(anEntry);
     
      if (nodeN != null)
      {
         nodeN.data = firstNode.data; // Replace located entry with entry in first node
        
         firstNode = firstNode.next; // Remove first node
         numberOfEntries--;
        
         result = true;
      } // end if
        
  return result;
} // end remove

private class Node
{
   private T    data; // Entry in bag
   private Node next; // Link to next node

  private Node(T dataPortion)
  {
   this(dataPortion, null);
  } // end constructor
  
  private Node(T dataPortion, Node nextNode)
  {
   data = dataPortion;
   next = nextNode;
  } // end constructor
} // end Node
} // end LinkedBag

Explanation / Answer

Task 1:

/** Adds a new entry to this bag.
@param newEntry The object to be added as a new entry
@return True if the addition is successful, or false if not. */
   public boolean add(T newEntry, boolean sorted) // OutOfMemoryError possible
   {
       Node newNode = new Node(newEntry);
       //add in sorted order
       if(sorted && firstNode!=null){
           Node temp = firstNode;
           Node prev = temp;
           while(temp.data < newEntry && temp!=null){//traverse till you get lesser value than new element value
               prev = temp;
               temp = temp.next;
           }
           newEntry.next = temp;
           prev.next = newEntry;
       }
       else{
           // Add to beginning of chain:
           newNode.next = firstNode; // Make new node reference rest of chain
           // (firstNode is null if chain is empty)   
           firstNode = newNode; // New node is at beginning of chain
       }
  
   numberOfEntries++;
  
   return true;
   } // end add

Task2:

/** Adds a new entry to this bag.
     @param newEntry The object to be added as a new entry.
     @return True if the addition is successful, or false if not. */
public boolean add(T newEntry, boolean sorted);

Task3: Now you add both methods in respective class/interface and test it

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