Antrian (Queue)
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 Belakang 1 2 3 4 5 6 7 antrian Implementasi antrian dengan larik Gambar (a)
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 kebelakang 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 Depan Belakang 1 2 3 4 5 6 7 8 Implementasi antrian dengan larik Gambar (b)
Implementasi dengan Larik Depan Belakang 1 2 3 4 5 6 7 8 Implementasi antrian dengan larik Gambar (c)
Implementasi dengan Larik Depan Belakang 1 2 3 4 5 6 7 8 Implementasi antrian dengan larik Gambar (d)
Implementasi dengan Larik Depan Belakang 1 2 3 4 5 6 7 8 Implementasi antrian dengan larik Gambar (e)
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
Implementasi dengan Larik if belakang > maksAntrian then belakang = 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
Implementasi dengan Larik if depan > maksAntrian then depan = 1 eif eproc
SELESAI ANTRIAN