// The SongList class that represents a circular linked list of Song nodes // Your name here public class SongList { // instance variables private Song m_last; private int m_numElements; // constructor // Do not make any changes to this method! public SongList() { m_last = null; m_numElements = 0; } // check whether the list is empty // Do not make any changes to this method! boolean isEmpty() { if (m_last == null) return true; else return false; } // return the size of the list (# of Song nodes) // Do not make any changes to this method! public int size() { return m_numElements; } // add a new Song to the circular linked list with the given artist and // title, keeping the list sorted by *song title*. public void add(String artist, String title) { // TODO: implement this method } // remove a Song associated with the given artist and title from the list, // keeping the list sorted by *song title*. public boolean remove(String artist, String title) { // TODO: implement this method } // build and return a circular linked list that contains all songs from the // given artist public SongList buildList(String artist) { // TODO: implement this method } // return a string representation of the list // Do not make any changes to this method! public String toString() { String listContent = ""; Song current = m_last; if (m_last != null) do { current = current.getLink(); listContent += " [" + current.getArtist() + " - " + current.getTitle() + "]\n"; } while (current != m_last); return listContent; } }