Queue

14
QUEUE Copyright 2008 by Yohana

description

as

Transcript of Queue

Page 1: Queue

QUEUECopyright 2008 by Yohana

Page 2: Queue

Definisi• Queue = antrian• Data yang pertama masuk dalam antrian, akan

keluar terlebih dahulu.

• Jenis-jenis Queue :– Linear Queue– Double Ended Queue (Dequeue)

Page 3: Queue

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.

Page 4: Queue

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)

Page 5: Queue

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

Page 6: Queue

Algoritma Lengkap INSERT• Periksa apakah Antrian BISA DIISI

if ( R < n – 1){

R = R + 1;Q[R] = x;

}else

cout<<“Antrian Penuh”;

Page 7: Queue

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

Page 8: Queue

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

Page 9: Queue

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)

Page 10: Queue

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

Page 11: Queue

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

Page 12: Queue

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

Page 13: Queue

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

Page 14: Queue

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