Chapter 12 Antrian (Queue) Program Studi Ekstensi DTE FTUI Slides©2007
Antrian Sifatnya: FIFO (First in First Out) Penerapan Multiprogramming: –Task yang lebih dulu datang –Task yang lebih dulu request Antrian dapat digambarkan: –Larik
Implementasi dengan Larik Depan antrian (a) Implementasi antrian dengan larik Belakang
Implementasi dengan Larik Digunakan satu antrian berbentuk larik satu dimensi dan dua variabel: –Depan indeks elemen terdepan –Belakang indeks elemen terakhir
Definisikan Antrian def maksAntrian: 8 antrian: array[1.. maksAntrian] of string depan, belakang: integer edef
Operasi masuk Antrian proc masuk (x, penuh) {Masuk x ke belakang antrian dan laporkan apakah penuh atau tidak} if belakang = maksAntrian then penuh:= true else penuh:= false antrian[belakang]:= x belakang:= belakang + 1 eif eproc
Operasi keluar Antrian proc keluar (x, kosong) {Keluar x dari depan antrian dan laporkan apakah kosong atau tidak} if depan >= belakang then kosong:= true else kosong:= false x:= antrian[depan] depan:= depan + 1 eif eproc
Permasalahan Tidak boleh ada elemen yang tertimpa Dapat menentukan apakah antrian kosong atau penuh Dengan hanya menggunakan variabel depan dan belakang, keadaan penuh dan kosong tidak dapat ditentukan
Implementasi dengan Larik DepanBelakang (b) Implementasi antrian dengan larik
Implementasi dengan Larik (c) Implementasi antrian dengan larik DepanBelakang
Implementasi dengan Larik (d) Implementasi antrian dengan larik DepanBelakang
Implementasi dengan Larik (e) Implementasi antrian dengan larik DepanBelakang
Implementasi dengan Larik Untuk mengatasi persoalan: –Menggunakan variabel: jumlah –jumlah: mencatat jumlah data yang ada di dalam antrian –Antrian kosong: jumlah berharga 0 –Antrian penuh: jumlah berharga 1
Implementasi dengan Larik proc masuk (x, penuh) {Masuk x kebelakang antrian dan laporkan apakah penuh atau tidak} if jumlah = maksAntrian then penuh:= true else penuh:= false antrian[belakang]:= x jumlah:= jumlah + 1 belakang:= belakang + 1 if depan > maksAntrian then depan:= 1 eif eproc
Implementasi dengan Larik proc keluar (x, kosong) {Keluar x dari depan antrian dan laporkan apakah kosong atau tidak} if jumlah = 0 then kosong:= true else kosong:= false x:= antrian[depan] jumlah:= jumlah + 1 depan:= depan + 1 if belakang > maksAntrian then belakang:= 1 eif eproc
SELESAI ANTRIAN