Latihan: Antrean Terurut Ganda
Mengimplementasikan penempatan data otomatis terurut dari kecil ke besar menggunakan struktur Double Linked List, serta memvalidasi pointer dua arah.
Mengimplementasikan penempatan data otomatis terurut dari kecil ke besar menggunakan struktur Double Linked List, serta memvalidasi pointer dua arah.
Kamu kembali ditugaskan untuk membuat sistem antrean prioritas di mana setiap angka yang masuk harus langsung diurutkan dari yang terkecil ke yang terbesar.
Namun, kali ini manajer meminta pembaruan sistem. Sistem yang baru harus bisa ditelusuri dari depan ke belakang, maupun dari belakang ke depan secara instan. Oleh karena itu, kamu wajib menggunakan Double Linked List. Kesalahan sekecil apa pun dalam menyambungkan gerbong akan menyebabkan antrean terputus saat ditelusuri mundur!
InsertSorted pada starter code yang disediakan.First sekaligus Last.x) lebih kecil atau sama dengan elemen pertama, lakukan penyambungan pointer next dan prev di bagian depan First.A->next menunjuk elemen baru, dan elemen baru prev-nya menunjuk A. Jangan lupa sambungkan ke B juga! Jika data diletakkan di paling ujung, pastikan kamu memperbarui variabel pointer Last.Program akan mencetak log proses masuknya data, diikuti oleh hasil penelusuran dari dua arah:
first menggunakan lengan next.last menggunakan lengan prev.=== HASIL DOUBLE LINKED LIST ===
Maju : [urutan angka membesar]
Mundur : [urutan angka mengecil]Angka dimasukkan secara acak, sistem langsung mengurutkannya, dan pembacaan dua arah berhasil membuktikan pointer prev terhubung dengan benar.
Output:
=== SIMULASI ANTREAN TERURUT GANDA ===
Data masuk : 4, 2, 6, 10, 1
=== HASIL DOUBLE LINKED LIST ===
Maju : 1 2 4 6 10
Mundur : 10 6 4 2 1Hint: Menyisipkan elemen di tengah pada Double Linked List butuh fokus ekstra. Jika kamu menyisipkan elemen
Nsetelahtemp, urutan kode yang aman adalah:
N->next = temp->next;N->prev = temp;- Jika
temp->nextBUKAN NULL, maka(temp->next)->prev = N;temp->next = N;Jangan lupa, perbaruiL->last = Njika ternyataNdiselipkan di paling akhir!