Anda di halaman 1dari 14

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]

9
3

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=n1
R<n1
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]

Delete Kiri

9 Insert Kanan

Delete Kanan
L

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=n1
L >0
R<n1
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;
}

Anda mungkin juga menyukai