Latihan: Sistem Data Mahasiswa
Menyimpan tipe data bentukan (struct) ke dalam Double Linked List, lalu mengimplementasikan algoritma pencarian linear dan reverse traversal.
Menyimpan tipe data bentukan (struct) ke dalam Double Linked List, lalu mengimplementasikan algoritma pencarian linear dan reverse traversal.
Sistem akademik kampus membutuhkan struktur data yang tangguh untuk menyimpan informasi mahasiswa yang mendaftar. Data yang disimpan meliputi Nama, Alamat, dan IPK (Indeks Prestasi Kumulatif).
Karena admin kampus sering kali perlu melihat pendaftar terbaru (yang masuk paling akhir), sistem ini diputuskan menggunakan Double Linked List. Dengan menunjuk langsung ke ekor antrean (Last) dan bergerak mundur menggunakan pointer prev, menampilkan data dari belakang ke depan akan menjadi sangat instan tanpa perlu membalikkan posisi datanya.
CariMahasiswa: Buat algoritma pencarian sekuensial. Telusuri list dari depan ke belakang. Jika atribut nama pada info cocok dengan targetNama, cetak informasi lengkap mahasiswa tersebut. Jika penelusuran sampai ujung dan tidak ada yang cocok, tampilkan pesan bahwa data tidak ada.PrintMundur: Buktikan kehebatan Double Linked List! Alih-alih mulai dari First, mulailah pointer Anda dari Last. Cetak nama mahasiswanya, lalu bergerak mundur dengan menetapkan pointer sementara Anda ke elemen sebelumnya (temp = temp->prev).Program akan mencetak hasil pencarian untuk nama spesifik (Budi Santoso), lalu mencetak seluruh urutan nama mahasiswa secara terbalik (dari yang terakhir diinput ke yang paling awal).
=== SIMULASI SISTEM DATA MAHASISWA ===
Mencoba mencari data: Budi Santoso...
=== HASIL PENCARIAN ===
Nama : Budi Santoso
Alamat : Jl. Rajabasa
IPK : 3.8
=== DAFTAR NAMA DARI BELAKANG ===
Citra Kirana
Budi Santoso
Andi SaputraHint Mengakses Struct di dalam Pointer: Mengingat
infosekarang bukanlah integer tunggal melainkan sebuahstruct Mahasiswa, Anda harus menggunakan operator titik (.) setelah melakukan dereference dengan panah (->).Contohnya: Untuk membandingkan nama, gunakan
if (temp->info.nama == targetNama). Untuk mencetak IPK, gunakancout << temp->info.ipk;.