Queue (antrian) adalah
struktur data dimana data yang pertama kali dimasukkan adalah data yang pertama
kali bisa dihapus. Atau bisa juga disebut dengan struktur data yang menggunakan
mekanisme FIFO (First
In First Out).
Queue dalam kehidupan
sehari-hari seperti antrian pada penjualan tiket kereta api, dimana orang yang
pertama datang adalah orang yang pertama kali dilayani untuk membeli tiket.
Jika ada orang baru yang datang akan membali tiket, maka posisinya berada pada
urutan paling belakang dalam antrian tersebut. Orang yang berada pada posisi terakhir
dalam antrian adalah yang terakhir kali dapat dilayani dan memperoleh tiket
kereta api (kalau kurang beruntung, maka akan kehabisan tiket). Contoh lain
adalah nasabah yang antri di teller bank, paket data yang menunggu untuk
ditransmisikan lewat internet, antrian printer dimana terdapat antrian print
job yang menunggu giliran untuk menggunakan printer, dsb.
Istilah-istilah
yang digunakan dalam queue (antrian)
Memasukkan data (insert) disebut juga dengan put, add, atau enqueue. Menghapus
data (remove) biasa disebut dengan istilah delete, get, atau dequeue. Bagian
belakang queue,
dimana data bisa dimasukkan disebut dengan back, tail (ekor), atauend (akhir). Sedangkan bagian depan (front) queue dimana data bisa dihapus juga biasa
disebut dengan istilah kepala (head).
Circular
Queue
Di dunia nyata apabila seseorang sedang mengantri (misalnya antri tiket kereta
api), apabila telah dilayani dan memperoleh tiket, maka ia akan keluar dari
antrian dan orang-orang yang berada di belakangnya akan bergerak maju ke dapan.
Kita bisa saja menggerakkan setiap item data ke depan apabila kita menghapus
data yang terdepan, tetapi hal ini kurang efektif. Sebaliknya kita tetap
menjaga setiap item data di posisinya, yang kita lakukan hanyalah merubah
posisi front dan rear saja.
Yang menjadi permasalahan adalah apabila posisi rear berada pada bagian akhir dari array
(atau pada nomor indeks yang terbesar). Meskipun ada bagian yang kosong di
awal-awal array – karena mungkin data telah dihapus, data baru tidak bisa
dimasukkan lagi karena rear-nya
sudah tidak bisa bergerak lagi. Atau mungkinkah posisi rear nya bisa berpindah? Situasi seperti
itu bisa dilihat seperti gambar berikut:
bisa memasukkan data baru) – meskipun queue-nya belum penuh, maka front danrear-nya berputar (kembali) ke bagian awal array. Kejadian
seperti ini dinamakan dengan circular
queue (atau
kadang-kadang disebut juga dengan istilah ring
buffer). Kejadian seperti ini seperti terlihat pada
gambar berikut:
Perhatikan bahwa setelah rear berputar
(kembali) ke bagian awal array, posisinya sekarang di bawah front, kebalikan dari posisi aslinya (front berada
di bawah rear). Coba hapus beberapa data sehingga pada suatu
saat front juga
akan berputar (balik) ke bagian awal array, sehingga front dan rear akan
ke susunan aslinya (front di
bawah rear).



Tidak ada komentar:
Posting Komentar