Anda di halaman 1dari 9

QUEUE (ANTRIAN)

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)

Alternatif 3: queue sirkuler


Array (listarray) dibayangkan seolah-olahsirkuler
Proses enqueue dan dequeue bisa dilakukan secara
langsung pada queue.
Elemen-elemen disimpan mulai dari front sampai rear.
Hal penting yang perlu diperhatikan adalah pada saat
front/rear melalui indeks tertinggi (ukuran list).
Posisi dimulai 0-(size-1), posisi (size -1) didefinisikan
merupakn posisi sebelum posisi 0 (yang ekivalen
dengan size % size).
Untuk membantu proses enque/dequeue digunakan
operator modulus (%)

Queue Implementation (2)

12

Array-based Queue

Array-based Queue (lanjut)

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

Linked queue (lanjut)

Anda mungkin juga menyukai