diff --git a/SongList.java b/SongList.java index 9535073..02e6d02 100644 --- a/SongList.java +++ b/SongList.java @@ -59,12 +59,25 @@ public class SongList { Song current = m_last; if (current == null) return false; - while ((current.getLink().getTitle().compareTo(title) != 0) && (current.getLink().getArtist().compareTo(artist) != 0)) { - if (current.getLink() == m_last) - return false; + + while ((current.getLink().getTitle().compareTo(title) != 0) && (current.getLink().getArtist().compareTo(artist) != 0) && (current.getLink() != m_last)) { current = current.getLink(); } - current.setLink(current.getLink().getLink()); + if (current.getLink() == m_last) { + if ((m_last.getTitle().compareTo(title) == 0) && (m_last.getArtist().compareTo(artist) == 0)) { + current.setLink(m_last.getLink()); + if (current.getTitle().compareTo(current.getLink().getTitle()) >= 0) + m_last = current; + else + m_last = current.getLink(); + } + else + return false; + } + else { + current.setLink(current.getLink().getLink()); + } + m_numElements -= 1; return true; }