open class Playlist(val songliste: MutableList) { open fun gesamteSpieldauer() = songliste.sumBy { it.spieldauer } fun SpieldauerMitXOderBesser(x: Int): Int { var tmp: Int = 0 for (s in songliste) { if(s.bewertung >= x){ tmp += 1 } } return tmp } open fun alleAbspielen() { for (s in songliste) { s.abspielen() } } } class DynamicPlaylist (songlisteParam: MutableList): Playlist(songlisteParam){ class SongNode(val song : Song, var nextSong : SongNode?) private var first: SongNode? = null private var last: SongNode? = null init { reset(); /*first = SongNode(songliste.get(0), null) var runPointer = first for( i in 1..songliste.size){ runPointer?.nextSong = SongNode(songliste.get(i), null) runPointer = runPointer?.nextSong ?: runPointer } last = runPointer*/ } fun add(derSongTM : Song){ last?.nextSong = SongNode(derSongTM, null) last = last?.nextSong } fun take() : Song?{ var tmp = first first = first?.nextSong return tmp?.song } fun take2(searchSong : Song){ var test : Boolean = false var runTest = first while(runTest != null){ if(runTest.song == searchSong) test = true runTest = runTest.nextSong } if(test){ if(first?.song == searchSong) first = first?.nextSong else{ var runPointer = first while(runPointer?.nextSong?.song != searchSong){ runPointer = runPointer?.nextSong } if(runPointer.nextSong == last){ last = runPointer last?.nextSong = null } else runPointer.nextSong = runPointer.nextSong?.nextSong } } else println("Der zu löschende Song ist nicht vorhanden!") } fun reset(){ first = SongNode(songliste.get(0), null) var runPointer = first for( i in 1..songliste.size-1){ runPointer?.nextSong = SongNode(songliste.get(i), null) runPointer = runPointer?.nextSong ?: runPointer } last = runPointer } override fun gesamteSpieldauer() : Int{ var runPointer = first var tmp : Int = 0 while (runPointer != null){ tmp += runPointer.song.spieldauer runPointer = runPointer.nextSong } return tmp } override fun alleAbspielen() { var runPointer = first while (runPointer != null){ runPointer.song.abspielen() runPointer = runPointer.nextSong } } }