Queue

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

Queue

S1 Informatika

Nafiatun Sholihah, S.Kom., M.Cs.


Queue = Antrian

• Kumpulan elemen dengan penyisipan dan penghapusan elemen yang dilakukan dari
sisi/gerbang yang berbeda. Penyisipan dilakukan dari gerbang belakang dan penghapusan
dilakukan dari gerbang depan.
• Elemen yang pertama masuk ke antrian akan keluar pertama kalinya.
• Queue bersifat FIFO (First In First Out)
• Antrian dapat dibuat dengan menggunakan: Linear Array dan Circular Array atau dengan Linked
List
Stack vs Queue

LIFO vs FIFO
Ilustrasi

• FIFO (First In First Out)

Depan Belakang

0 1 2

Fakultas Ilmu Komputer 4


Queue - Linear Array

• Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar
di ujung satunya
• Sehingga membutuhkan 2 variabel: Head dan Tail
Head (depan) dan Tail (belakang) adalah variabel penanda dalam queue
yang menunjukkan elemen awal dan terakhir data queue sekarang.
Belakang akan selalu bergerak hingga mencapai MAX of QUEUE yang
menyebabkan queue PENUH!.
Operasi pada Queue (1)

• Operasi-operasi:
Create()
• Untuk menciptakan dan menginisialisasi Queue
• Dengan cara membuat Head dan Tail = -1
Operasi pada Queue (1)
Operasi pada Queue (2)

• 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
Operasi pada Queue (2)
Operasi pada Queue (3)

Fungsi 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
Operasi pada Queue (4)

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
• Proses ini sering juga disebut sebagai insert ataupun store
Operasi pada Queue (4)
Operasi pada Queue (5)

• 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
• Proses ini sering juga disebut sebagai remove ataupun retrieve
Operasi pada Queue (5)
Operasi pada Queue (6)

• 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
Operasi pada Queue (6)
Operasi pada Queue (7)

• Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head s/d tail
Penerapan Queue

• Pengetikan dengan keyboard


• Antrian pembayaran kasir, bank, apotek
• Antrian pelayanan pemeriksaan pasien
Latihan 1

Diketahui sebuah queue (SIZE: 5, tipe: int) mula – mula dalam kondisi kosong. Kemudian
queue dikenai operasi secara berturut – turut:

1. EnQueue(8),
2. EnQueue(9),
3. EnQueue(3),
4. DeQueue(),
5. EnQueue(5),

Gambarkan isi queue sekarang?

• Perbedaan Stack dengan Queue ?


Latihan 2

Diketahui sebuah stack (SIZE: 3, tipe: char) mula – mula dalam kondisi kosong.
Kemudian stack dikenai operasi secara berturut – turut:

1. enqueue(“A”),
5. dequeue(),
2. enqueue(“B”),
6. enqueue(“C”),
3. dequeue(),
7. enqueue(“D”),
4. dequeue(),

Gambarkan isi queue sekarang?


Circular Queue
Queue

• Queue yang menggunakan circular array (selanjutnya disebut circular queue) dapat
digunakan dalam siklus yang berulang.
• Immlustrasi : revolver pistol yang dapat diisi peluru kembali setelah peluru yang
sebelumnya ditembakkan.
Peluru yang baru dimasukkan akan ditembakkan pada siklus berikutnya setelah siklus sebelumnya
selesai.
Latihan 3

Diketahui sebuah stack (SIZE: 3, tipe: char) mula – mula dalam kondisi kosong.
Kemudian stack dikenai operasi secara berturut – turut:

1. enqueue(“Z”),
5. dequeue(),
2. enqueue(“X”),
6. dequeue(),
3. enqueue(“C”),
7. enqueue(“B”),
4. enqueue(“V”),

Gambarkan isi queue sekarang?

You might also like