160 likes | 642 Views
QUEUE (Antrian). Definisi. Queue = antrian Data yang pertama masuk dalam antrian, akan keluar terlebih dahulu. Jenis-jenis Queue : Linear Queue Double Ended Queue (Dequeue). Q[10]. 5. 0. 7. 3. 9. 2. 1. 8. 4. 6. x. x. x. x. R. F. 6. 3. R. F. X.
E N D
Definisi • Queue = antrian • Data yang pertama masuk dalam antrian, akan keluar terlebih dahulu. • Jenis-jenis Queue : • Linear Queue • Double Ended Queue (Dequeue)
Q[10] 5 0 7 3 9 2 1 8 4 6 x x x x R F 6 3 R F X Linear Queue (Antrian Lurus) • Ilustrasi Antrian Lurus 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)
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”;
0 3 5 7 2 9 1 4 6 8 x x x x R L Double Ended Queue (Deque) • Ilustrasi Deque (Antrian dengan Ujung Ganda) Insert Kiri 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)
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”; }