Latihan: Membangun Tabel Hash
Mengimplementasikan fungsi Hash menggunakan metode modulus dan menangani tabrakan data (collision) menggunakan teknik Linked List (Chaining).
Mengimplementasikan fungsi Hash menggunakan metode modulus dan menangani tabrakan data (collision) menggunakan teknik Linked List (Chaining).
Anda diminta merancang sistem penyimpanan NIP (Nomor Induk Pegawai) di sebuah perusahaan. Untuk mempercepat pencarian, Anda memutuskan menggunakan struktur data Hash Table berkapasitas 10 slot (MaxEl = 10).
Anda memilih fungsi hash berbasis Modulus (sisa bagi). Jika ada NIP 55523, maka 55523 mod 10 = 3. Data akan ditaruh di Indeks 3.
Namun, keesokan harinya datang pegawai baru dengan NIP 55573. Nilai 55573 mod 10 juga menghasilkan angka 3! Terjadilah Tabrakan Data (Collision). Sistem Anda harus mampu menangani tabrakan ini dengan menggandengkan data baru di belakang data lama membentuk sebuah rantai (Chaining).
Lengkapi fungsi InsertValue dengan langkah-langkah berikut:
x dengan kapasitas maksimum MaxEl.NULL, langsung tempatkan node baru sebagai elemen first dari indeks tersebut.temp untuk menelusuri rantai (traversal) hingga sampai ke ujung rantai. Setelah sampai di gerbong terakhir, kaitkan gerbong baru Anda ke elemen tersebut.Program akan mencetak gambaran visual dari Array Tabel Hash beserta rantai (Linked List) yang terbentuk pada setiap indeksnya berdasarkan simulasi data yang dimasukkan secara otomatis.
Indeks 3 akan mengalami tabrakan dan membentuk rantai berisi dua NIP.
Output:
=== ISI TABEL HASH PEGAWAI ===
Indeks 0 : [55520] -> NULL
Indeks 1 : (Kosong)
Indeks 2 : [55522] -> NULL
Indeks 3 : [55523] -> [55573] -> NULL
...Hint: Hati-Hati dengan Traversal!
Saat menangani tabrakan, jangan sekali-kali Anda menggunakan variabeltable[index].firstsecara langsung dalam perulanganwhile. Jika Anda melakukan itu, alamat awal tabel akan hilang/rusak. Selalu salin alamatnya ke pointer lokal sementara (misalnyaNode *temp = table[index].first) untuk keperluan mencari ujung rantai.