Imam Mukhlash
Antrian
Antri duluan, dilayani lebih dulu, FIFO
(First-In, First-Out)
Aplikasi
simulasi antrian dalam kasus nyata (antrian
pelayanan bank, pelayanan karcis, dan lainlain)
pengaturan job pada sistem operasi, akses
storage dan lain-lain
dalam single program banyak aplikasi yang
mengharuskan multiple request, dan harus
dipelihara dengan menggunakan queue
dll
Definisi
Queue adalah varian terbatas dari list
yang mana proses penambahan elemen
hanya dilakukan pada posisi setelah
elemen terakhir dan proses penghapusan
hanya dilakukan pada elemen pertama.
Elemen pertama: first/front/head
Elemen terakhir: last/rear/tail
Penambahan elemen: enqueue
Penghapusan elemen: dequeue
Queue: ADT
Implementasi
Array-based queue
Linked queue
Alternatif 1
Array-based queue merupakan penyederhanaan dari array-based
list
Asumsikan bahwa ada n elemen dalam queue yang disimpan
pada n posisi pertama dalam list. Jika kita tempatkan rear (tail)
pada posisi 0, maka proses dequeue hanya memerlukan waktu
(1), tetapi proses enqueue memerlukan waktu (n), karena
harus dilakukan pergeseran semua elemen ke kiri.
rear
20
front
12
17
23
...
Enqueue(11)
rear
11
front
20
12
17
23
...
Alternatif 2
Sebaiknya, jika kita tempatkan rear pada posisi
n-1, maka proses enqueue hanya memerlukan
waktu (1), tetapi proses dequueue
memerlukan waktu (n) karena harus dilakukan
pergeseran ke kiri.
Untuk mengurangi waktu eksekusi diatas, tidak
dilakukan pergeseran elemen secara fisik, tetapi
menggeser alamat/indeks front pada saat
dequeue atau menggeser rear pada saat
enqueue. Proses enqueue dan dequeu hanya
memerlukan (1)
Contoh?
Alternatif 2
Alternatif 2
Jika kita menggunakan bentuk ini, permasalahan yang
terjadi adalah jika suatu saat mungkin rear melampaui
posisi (n-1). Kondisi ini seolah-olah queue penuh
padahal masih ada elemen yang tidak terpakai, yaitu
yang ada di sebelah kiri front. Untuk menangani kondisi
semacam ini, pemecahan yang bias dilakukan adalah
jika rear sudah melampaui (n-1) dan masih ada elemen
yang belum terisi maka lakukan reorganisasi listarray,
yaitu menggeser semua elemen ke kiri sehingga semua
elemen akan ditempatkan pada list mulai dari elemen
yang pertama.
Proses reorganisasi list akan memerlukan paling tidak
(n)
12
Array-based Queue
Linked queue
merupakan pengembangan dari linked list,
yang mana atribut front dan rear
merupakan pointer yang menunjuk ke
elemen front (head) dan rear (tail) dan dari
queue.
Proses enqueue mirip dengan proses
insert-first pada linked list dan proses
dequeue sama dengan proses removelast pada linked list
Linked Queue