organisasi berkas
• Sekuensial
• Record disimpan dalam file secara beruntun
berdasarkan kedatangannya
• Record yang masuk pertama akan memiliki
indeks atau alamat yang lebih kecil daripada
record yang masuk kemudian
• Langsung
• Sekunsial Berindeks
File Langsung
• Dengan organisasi ini, untuk menemukan suatu
record, maka tidak melalui proses pencarian,
namun langsung menuju ke alamat yang
ditempati record
• Contoh: record dengan key 100 akan disimpan
pada alamat 100
• Kerugian: berarti harus ada ruang yang cukup
besar untuk menampung semua kemungkinan
key yang ada.
• Contoh: jika key berupa NIM (8 digit) berarti
harus ada alamat 0000000 sampai 9999999
File Sekuensial Berindeks
• Fungsi modulo
• Home address dicari dengan cara mencari sisa
hasil bagi nilai key dengan suatu nilai tertentu.
• Fungsi: f(key) = key mod n
• Dengan n adalah:
• Banyaknya ruang alamat yang tersedia
• Atau bilangan prima terdekat yang berada di atas
nilai banyak data, setelah itu banyaknya ruang
alamat disesuaikan dengan n
Macam-macam Fungsi HASH
• Fungsi Pemotongan
• Home address dicari dengan memotong nilai key ke
jumlah digit tertentu yang lebih pendek.
• Contoh: NIM yang tadinya 8 digit, dipotong hanya
menjadi 2 digit!
• Fungsi Pelipatan
• Dilakukan pelipatan terhadap record key dengan
bagian yang sama panjang, lalu setiap bagian
dijumlahkan
• NIM 8 digit dibagi dua digit, hingga menjadi 4 buah.
• Misal: 22002521, dibagi 22 00 25 21 kemudian
dijumlahkan: 68
Macam-macam Fungsi HASH
• Fungsi Pengkuadratan
• Home address dicari dengan mengkuadratkan setiap
digit pembentuk key, lalu semua hasilnya
dijumlahkan
• Contoh: 22002211, semua digit dikuadratkan dan
dijumlah
• Fungsi Penambahan Kode ASCII
• Jika key bukan kode numerik, home address dicari
dengan menjumlahkan kode ASCII setiap huruf
pembentuk key
• ADE = 65 + 68 + 69 = 192
Collision (Tabrakan)
• Open Addressing
• Chaining
• Coalesced Hashing
• Chained Progressive Overflow
• Bucket
Metode Open Addressing
• Alamat alternatif dicari pada alamat-alamat selanjutnya
yang masih kosong
• Cara:
• Linear Probing
• Pencarian dilakukan dengan jarak pencarian tetap
• Quardratic Probing
• Pencarian dilakukan dengan jarak pencarian berubah dengan
perubahan tetap
• Double Hashing
• Pencarian dilakukan menggunakan fungsi hash kedua. Pertama
hash untuk mencari home address, kedua untuk pencarian jika
terjadi collision. Fungsi hash kedua tidak boleh menghasilkan nilai
0
Contoh Liniear Probing
• Operasi-operasi:
Create()
• Untuk menciptakan dan menginisialisasi Queue
• Dengan cara membuat Head dan Tail = -1
Queue (3)
Queue (4)
• IsEmpty()
• Untuk memeriksa apakah Antrian sudah penuh atau
belum
• Dengan cara memeriksa nilai Tail, jika Tail = -1 maka
empty
• Kita tidak memeriksa Head, karena Head adalah
tanda untuk kepala antrian (elemen pertama dalam
antrian) yang tidak akan berubah-ubah
• Pergerakan pada Antrian terjadi dengan penambahan
elemen Antrian kebelakang, yaitu menggunakan nilai
Tail
Queue (5)
Queue (6)
Fungis IsFull
• Untuk mengecek apakah Antrian sudah penuh atau
belum
• Dengan cara mengecek nilai Tail, jika Tail >= MAX-1
(karena MAX-1 adalah batas elemen array pada C)
berarti sudah penuh
Queue (7)
Enqueue
• Untuk menambahkan elemen ke dalam
Antrian, penambahan elemen selalu
ditambahkan di elemen paling belakang
• Penambahan elemen selalu menggerakan
variabel Tail dengan cara increment counter
Tail terlebih dahulu
Queue (8)
Queue (9)
• Dequeue()
• Digunakan untuk menghapus elemen
terdepan/pertama (head) dari Antrian
• Dengan cara menggeser semua elemen
antrian kedepan dan mengurangi Tail dgn 1
• Penggeseran dilakukan dengan menggunakan
looping
Queue (10)
Queue (11)
• Clear()
• Untuk menghapus elemen-elemen Antrian
dengan cara membuat Tail dan Head = -1
• Penghapusan elemen-elemen Antrian
sebenarnya tidak menghapus arraynya,
namun hanya mengeset indeks pengaksesan-
nya ke nilai -1 sehingga elemen-elemen
Antrian tidak lagi terbaca
Queue (12)
Queue (13)
• Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head s/d tail
Soal