Transcript Queue

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
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
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”;
}