Queue
description
Transcript of Queue
QUEUECopyright 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]
0 1 2
x x
3 4
x x
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 :a. AWAL (Inisialisasi)b. INSERT (Sisip, Masuk, Simpan, Tulis)c. DELETE (Hapus, Keluar, Ambil/Dilayani, Baca)d. RESET (Kembali ke AWAL)
Kondisi Antrian LurusKondisi Antrian Ciri
a.b.c.d.e.
KOSONGPENUHBISA DIISIADA ISINYAPERLU DIRESET
F = R + 1 dimana sajaR = n – 1R < n – 1F < R + 1F = 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)
Q[10]
0 1 2
x x
3 4
x x
5 6 7 8 9
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.
Insert Kiri
Delete Kiri
Insert Kanan
Delete Kanan
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 DequeKondisi Antrian Ciri
a.b.c.d.e.f.
KOSONGPENUH KIRIPENUH KANANBISA DIISI DARI KIRIBISA DIISI DARI KANANADA ISINYA
L = R + 1 dimana sajaL = 0R = n – 1L > 0R < n – 1L < R + 1
Algoritma Lengkap INSERT KIRI• Periksa apakah Deque BISA DIISI DARI KIRIvoid INSERT_KIRI(){ if ( L > 0){L = L - 1;Q[L] = x;}elsecout<<“Antrian Kiri Penuh”;}
Algoritma Lengkap INSERT KANAN• Periksa apakah Deque BISA DIISI DARI KANANvoid 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 ISINYAvoid DELETE_KIRI(){ if (L < R + 1)
{x = Q[L];L = L + 1;
}else
cout<<“Antrian Kosong”;}
Algoritma Lengkap DELETE KANAN• Periksa apakah Deque ADA ISINYAvoid DELETE_KANAN(){ if (L < R + 1)
{x = Q[R];R = R - 1;
}else
cout<<“Antrian Kosong”;}