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

Hello!! Please help this for me!! Thank you for your time!!!!!!!! { /** The Node

ID: 3621855 • Letter: H

Question

Hello!! Please help this for me!!

Thank you for your time!!!!!!!!

{

    /**

       The Node class stores a list element

       and a reference to the next node.

    */

    private class Node

    {

        String value;  

        Node next;     

        /**

           Constructor.           

           @param val The element to store in the node.

           @param n The reference to the successor node.

        */

        Node(String val, Node n)

        {

            value = val;

            next = n;

        }

        /**

           Constructor.

           @param val The element to store in the node.

        */

        Node(String val)

        {

           // Call the other (sister) constructor.

           this(val, null);           

        }

    }

    private Node first; // list head

    private Node last;   // last element in list

    /**

       Constructor.

    */

    public LinkedList1()

    {

        first = null;

        last = null;       

    }

    /**

       The isEmpty method checks to see

            if the list is empty.

            @return true if list is empty,

            false otherwise.

    */

    public boolean isEmpty()

    {       

        return first == null;      

    }

    /**

       The size method returns the length of the list.

       @return The number of elements in the list.

    */

    public int size()

    {

       int count = 0;

       Node p = first;    

            while (p != null)

       {

           // There is an element at p

           count ++;

           p = p.next;

       }

       return count;

    }

    /**

       The add method adds an element to

            the end of the list.

       @param e The value to add to the

            end of the list.      

    */

    public void add(String e)

    {

      if (isEmpty())

      {

          first = new Node(e);

          last = first;

      }

      else

      {

          // Add to end of existing list

          last.next = new Node(e);

          last = last.next;

      }     

    }

    /**

       The add method adds an element at a position.

       @param e The element to add to the list.

       @param index The position at which to add

            the element.

       @exception IndexOutOfBoundsException When

            index is out of bounds.

    */

    public void add(int index, String e)

    {

         if (index < 0 || index > size())

         {

             String message = String.valueOf(index);

             throw new IndexOutOfBoundsException(message);

         }

         // Index is at least 0

         if (index == 0)

         {

             // New element goes at beginning

             first = new Node(e, first);

             if (last == null)

                 last = first;

             return;

         }

         // Set a reference pred to point to the node that

         // will be the predecessor of the new node

         Node pred = first;       

         for (int k = 1; k <= index - 1; k++)       

         {

            pred = pred.next;          

         }

         // Splice in a node containing the new element

         pred.next = new Node(e, pred.next);

         // Is there a new last element ?

         if (pred.next.next == null)

             last = pred.next;        

    }

    /**

       The toString method computes the string

       representation of the list.

       @return The string form of the list.

    */

    public String toString()

    {

      StringBuilder strBuilder = new StringBuilder();

      // Use p to walk down the linked list

      Node p = first;

      while (p != null)

      {

         strBuilder.append(p.value + " ");

         p = p.next;

      }     

      return strBuilder.toString();

    }

    /**

       The remove method removes the element at an index.

       @param index The index of the element to remove.

       @return The element removed.

       @exception IndexOutOfBoundsException When index is

                  out of bounds.    

    */

    public String remove(int index)

    {

       if (index < 0 || index >= size())

       {

           String message = String.valueOf(index);

           throw new IndexOutOfBoundsException(message);

       }

       String element; // The element to return    

       if (index == 0)

       {

          // Removal of first item in the list

          element = first.value;   

          first = first.next;

          if (first == null)

              last = null;            

       }

       else

       {

          // To remove an element other than the first,

          // find the predecessor of the element to

          // be removed.

          Node pred = first;

          // Move pred forward index - 1 times

          for (int k = 1; k <= index -1; k++)

              pred = pred.next;

          // Store the value to return

          element = pred.next.value;

          // Route link around the node to be removed

          pred.next = pred.next.next;

          // Check if pred is now last

          if (pred.next == null)

              last = pred;             

       }

       return element;       

    }

    /**

       The remove method removes an element.

       @param element The element to remove.

       @return true if the remove succeeded,

            false otherwise.

    */

    public boolean remove(String element)

    {

       if (isEmpty())

           return false;     

       if (element.equals(first.value))

       {

          // Removal of first item in the list

          first = first.next;

          if (first == null)

              last = null;      

          return true;

       }

      // Find the predecessor of the element to remove

      Node pred = first;

      while (pred.next != null &&

             !pred.next.value.equals(element))

      {

          pred = pred.next;

      }

      // pred.next == null OR pred.next.value is element

      if (pred.next == null)

          return false;

      // pred.next.value is element

      pred.next = pred.next.next;   

      // Check if pred is now last

      if (pred.next == null)

          last = pred;

      return true;      

    }

    public static void main(String [] args)

    {

        LinkedList1 ll = new LinkedList1();

        ll.add("Amy");

        ll.add("Bob");

        ll.add(0, "Al");

        ll.add(2, "Beth");

        ll.add(4, "Carol");

        System.out.println("The members of the list are:");

        System.out.print(ll);

    }

}

Explanation / Answer

Given the method to insert at a given index, writing the new add method is simple. You will simply walk through the linked list and wait until the item you are looking at is greater than the item you are inserting. String add(String e){ Node p = first; int index = 0; while (p != null && p.value.compareTo(e) < 0) { p = p.next; index++; } //at this point, we're either at the end of the list or should insert here add(index,e); } Merging takes a little more thought: OrderedLinkedList mergeLists(OrderedLinkedList l){ int index1 = 0; int index2 = 0; Node p1 = first; Node p2 = l.first; OrderedLinkedList ret = new OrderedLinkedList(); if (last.value.compareTo(l.last.value) > 0){ while(p2 != null){ if(p1.value.equals(p2.value){ ret.add(p1.value); p1 = p1.next; p2 = p2.next; } else if (p1.value.compareTo(p2.value) < 0){ ret.add(p1.value); p1 = p1.next; } else{ ret.add(p2.value); p2 = p2.next; } } while (p1 != null){ ret.add(p1.value); p1 = p1.next; } } else{ while(p1 != null){ if(p1.value.equals(p2.value){ ret.add(p1.value); p1 = p1.next; p2 = p2.next; } else if (p1.value.compareTo(p2.value) < 0){ ret.add(p1.value); p1 = p1.next; } else{ ret.add(p2.value); p2 = p2.next; } } while (p2 != null){ ret.add(p1.value); p2 = p2.next; } } return ret; }
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