Latihan: Playlist Musik Melingkar
Membangun playlist lagu tanpa batas menggunakan Circular Linked List dengan mengimplementasikan fungsi InsertFirst dan InsertLast.
Membangun playlist lagu tanpa batas menggunakan Circular Linked List dengan mengimplementasikan fungsi InsertFirst dan InsertLast.
Kamu sedang mengembangkan fitur Mini Player untuk sebuah aplikasi pemutar musik. Fitur ini memaksa penggunanya mendengarkan lagu dalam mode Repeat All secara bawaan. Artinya, setelah lagu terakhir di daftar putar selesai, pemutar musik harus langsung melompat kembali ke lagu pertama.
Untuk mewujudkan fitur ini tanpa harus mereset ulang indeks, kamu memutuskan untuk menggunakan Circular Linked List.
InsertFirst: Masukkan lagu di awal playlist. Ingat! Karena ini sirkuler, setiap kali elemen pertama berubah, kamu wajib mencari ekor antrean dan mengaitkannya ke kepala yang baru agar cincinnya tidak putus.InsertLast: Tambahkan lagu di akhir playlist. Prosesnya mirip: cari ekor saat ini, kaitkan ekor tersebut ke lagu baru, lalu pastikan lagu baru tersebut mengaitkan next-nya kembali ke elemen pertama.PrintPlaylist akan mencetak elemen lebih banyak dari jumlah aslinya untuk membuktikan bahwa list benar-benar berputar tanpa henti.Program akan mencetak daftar lagu yang sedang diputar secara berurutan. Karena ada 4 lagu dan fungsi mencetak sebanyak 7 putaran, output akan mengulang kembali ke lagu-lagu awal.
Output:
=== SPOTIFY MINI (REPEAT ALL) ===
Memutar lagu:
Lagu Favorit 1 -> Lagu A -> Lagu B -> Lagu C -> Lagu Favorit 1 -> Lagu A -> Lagu B -> (kembali ke awal...)Hint: Cara Menemukan Elemen Terakhir
Karena Circular Linked List tidak memilikiNULL, kondisi berhentimu saat melakukan penelusuran bukanlahwhile (temp->next != NULL).Gantilah menjadi
while (temp->next != L->first). Saat perulangan ini berhenti, pointertempmilikmu sedang berdiri tepat di atas elemen terakhir!