QUEUE Copyright 2008 by Yohana Definisi Queue antrian
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 0 Q[10] 1 2 3 4 5 6 x x F 7 8 9 3 6 F R X 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 : a. b. c. d. AWAL (Inisialisasi) INSERT (Sisip, Masuk, Simpan, Tulis) DELETE (Hapus, Keluar, Ambil/Dilayani, Baca) RESET (Kembali ke AWAL)
Kondisi Antrian Lurus Kondisi Antrian a. b. c. d. e. KOSONG PENUH BISA DIISI ADA ISINYA PERLU DIRESET Ciri 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 Q[10] 0 1 2 3 4 5 6 x x Delete Kiri 7 8 9 Insert Kanan Delete Kanan L R 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 : a. AWAL (Inisialisasi) b. INSERT (Sisip, Masuk, Simpan, Tulis) c. DELETE (Hapus, Keluar, Ambil/Dilayani, Baca)
Kondisi Deque Kondisi Antrian a. b. c. d. e. f. KOSONG PENUH KIRI PENUH KANAN BISA DIISI DARI KIRI BISA DIISI DARI KANAN ADA ISINYA Ciri 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”; }
- Slides: 14