QUEUE Copyright 2008 by Yohana
Definisi Queue = antrian Data yang pertama masuk dalam antrian, akan keluar terlebih dahulu. Jenis-jenis Queue : Linear Queue Double Ended Queue (Dequeue)
Linear Queue (Antrian Lurus) Ilustrasi Antrian Lurus Q[10] 1 2 x 3 4 5 6 7 8 9 F R 3 F X 6 R Keterangan : F = Front (depan) R = Rear (belakang) F menunjuk pengantri paling depan, yaitu pengantri yg siap dilayani. R menunjuk pengantri paling belakang, yaitu pengantri yg paling terakhir masuk.
Proses dlm Antrian Lurus Prinsip / Konsep Proses : FIFO (First In First Out) FIFS (First In First Serve) Proses : AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil/Dilayani, Baca) RESET (Kembali ke AWAL)
Kondisi Antrian Lurus Kondisi Antrian Ciri a. b. c. d. e. KOSONG PENUH BISA DIISI ADA ISINYA PERLU DIRESET F = R + 1 dimana saja R = n – 1 R < n – 1 F < R + 1 F = R + 1 dan R = n - 1
Algoritma Lengkap INSERT Periksa apakah Antrian BISA DIISI if ( R < n – 1) { R = R + 1; Q[R] = x; } else cout<<“Antrian Penuh”;
Algoritma Lengkap DELETE Periksa apakah Antrian ADA ISINYA if ( F < R + 1) { x = Q[F]; F = F + 1; if ((F=R+1) && (R=n-1)) { F = 0; R = -1; } } else cout<<“Antrian Kosong”;
Double Ended Queue (Deque) Ilustrasi Deque (Antrian dengan Ujung Ganda) Insert Kiri 1 2 x 3 4 5 6 7 8 9 L R Insert Kanan Q[10] Delete Kiri Delete Kanan Keterangan : L = Left (kiri) R = Right (kanan) L menunjuk pengantri yg terakhir masuk di sebelah kiri dan siap dilayani. R menunjuk pengantri yg terakhir masuk di sebelah kanan dan siap dilayani.
Proses dlm Deque Prinsip / Konsep Proses : bukan FIFO, bukan juga LIFO, tergantung kesempatan yang ada. Proses : AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil/Dilayani, Baca)
Kondisi Deque Kondisi Antrian Ciri a. b. c. d. e. f. KOSONG PENUH KIRI PENUH KANAN BISA DIISI DARI KIRI BISA DIISI DARI KANAN ADA ISINYA L = R + 1 dimana saja L = 0 R = n – 1 L > 0 R < n – 1 L < R + 1
Algoritma Lengkap INSERT KIRI Periksa apakah Deque BISA DIISI DARI KIRI void INSERT_KIRI() { if ( L > 0) { L = L - 1; Q[L] = x; } else cout<<“Antrian Kiri Penuh”;
Algoritma Lengkap INSERT KANAN Periksa apakah Deque BISA DIISI DARI KANAN void INSERT_KANAN() { if ( R < n - 1) { R = R + 1; Q[R] = x; } else cout<<“Antrian Kanan Penuh”;
Algoritma Lengkap DELETE KIRI Periksa apakah Deque ADA ISINYA void DELETE_KIRI() { if (L < R + 1) { x = Q[L]; L = L + 1; } else cout<<“Antrian Kosong”;
Algoritma Lengkap DELETE KANAN Periksa apakah Deque ADA ISINYA void DELETE_KANAN() { if (L < R + 1) { x = Q[R]; R = R - 1; } else cout<<“Antrian Kosong”;