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

For this Interface public interface SortedListInterface<T extends Comparable<? s

ID: 3581187 • Letter: F

Question

For this Interface

public interface SortedListInterface<T extends Comparable<? super T>> {

   /**

   * Adds a new entry to this list in its proper order, if it does not match

   * an existing object in the list.

   *

   * @param newEntry

   * An object to be added to the list.

   * @return True if the object was added to the list, otherwise return false.

   */

   public boolean add(T newEntry);

   /**

   * Removes the only occurrence of a specified entry from this

   * sorted list.

   *

   * @param anEntry

   * The object to be removed.

   * @return True if anEntry was located and removed; otherwise returns false.

   */

   public boolean remove(T anEntry);

   /**

   * Sees whether this list contains a given entry.

   *

   * @param anEntry

   * The object that is the desired entry.

   * @return True if the list contains anEntry, or false if not.

   */

   public boolean contains(T anEntry);

   /** Removes all entries from this list. */

   public void clear();

   /**

   * Gets the length of this list.

   *

   * @return the integer number of entries currently in the list.

   */

   public int getLength();

   /**

   * Sees whether this list is empty.

   *

   * @return true if the list is empty, or false if not.

   */

   public boolean isEmpty();

   /**

   * Retrieves all entries that are in this list in the order in which they

   * occur in the list.

   *

   * @return A newly allocated array of all the entries in the list. Note: If

   * the list is empty, the returned array is empty.

   */

   // Note: Can change return type to Object[] if T[] causes problems

   public T[] toArray();

  

   /**

   *

   * @return the sorted list of values with a space between each value

   */

   public String toString();

} // end SortedListInterface

Create a class(using generics) called BinaryTreeSortedList that implements this interface with a sorted list

Explanation / Answer

public class storedList<T> : System.Collections.Stored.IEnumerable<T>

{

    protected Node head;

    protected Node current = null;

    protected class Node

    {

        public Node next;

        private T data;

        public Node(T t)

        {

            next = null;

            data = t;

        }

        public Node Next

        {

            get { return next; }

            set { next = value; }

        }

        public T Data

        {

            get { return data; }

            set { data = value; }

        }

    }

    public StoredList()

    {

        head = null;

    }

    public void AddHead(T t)

    {

        Node n = new Node(t);

        n.Next = head;

        head = n;

    }

    public System.Collections.Stored.IEnumerator<T> GetEnumerator()

    {

        Node current = head;

        while (current != null)

        {

            yield return current.Data;

            current = current.Next;

        }

    }

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()

    {

        return GetEnumerator();

    }

}

public class SortedList<T> : StoredList<T> where T : System.IComparable<T>

{

    public void BubbleSort()

    {

        if (null == head || null == head.Next)

        {

            return;

        }

        bool swapped;

        do

        {

            Node previous = null;

            Node current = head;

            swapped = false;

            while (current.next != null)

            {

                if (current.Data.CompareTo(current.next.Data) > 0)

                {

                    Node tmp = current.next;

                    current.next = current.next.next;

                    tmp.next = current;

                    if (previous == null)

                    {

                        head = tmp;

                    }

                    else

                    {

                        previous.next = tmp;

                    }

                    previous = tmp;

                    swapped = true;

                }

                else

                {

                    previous = current;

                    current = current.next;

                }

            }

        } while (swapped);

    }

}

public class Person : System.IComparable<Person>

{

    string name;

    int age;

    public Person(string s, int i)

    {

        name = s;

        age = i;

    }

    public int CompareTo(Person p)

    {

        return age - p.age;

    }

    public override string ToString()

    {

        return name + ":" + age;

    }

    public bool Equals(Person p)

    {

        return (this.age == p.age);

    }

}

class Program

{

    static void Main()

    {

        SortedList<Person> list = new SortedList<Person>();

        string[] names = new string[]

        {

            "Franscoise",

            "Bill",

            "Li",

            "Sandra",

            "Gunnar",

            "Alok",

            "Hiroyuki",

            "Maria",

            "Alessandro",

            "Raul"

        };

        int[] ages = new int[] { 45, 19, 28, 23, 18, 9, 108, 72, 30, 35 };

        for (int x = 0; x < 10; x++)

        {

            list.AddHead(new Person(names[x], ages[x]));

        }

        foreach (Person p in list)

        {

            System.Console.WriteLine(p.ToString());

        }

        System.Console.WriteLine("Done with unsorted list");

        list.BubbleSort();

        foreach (Person p in list)

        {

            System.Console.WriteLine(p.ToString());

        }

        System.Console.WriteLine("Done with sorted list");

    }

}