Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

4 QUEUE (ANTREAN) BAB Definisi Queue (antrean)

Presentasi serupa


Presentasi berjudul: "4 QUEUE (ANTREAN) BAB Definisi Queue (antrean)"— Transcript presentasi:

1 4 QUEUE (ANTREAN) BAB Definisi Queue (antrean)
Queue (antrean) adalah suatu bentuk khusus dari list linier (daftar linier), dengan operasi penyisispan (insertion) hanya diperbolehkan pada salah satu sisi yaitu sisi belakang yang disebut Rear dan operasi penghapusan (deletion) hanya diperbolehkan padasis depan yang disebut Front dari list. Kita menggunakan notasi Noel (q) untuk menyatakan jumlah elemen di dalam antrean (q). Noel mempunyai harga integer. Operasi pemasukan disebut insertion dan operasi penghapusan disebut remove Queue mempunyai sifat FIFO (First In First Out).

2 Antrean Q = [ Q1, Q2, … , Qt ] Kita notasikan bagian depan dari antrean Q sebagai Front(q) dan bagian belakang sebagai Rear(q) sehingga untuk antrean Q = [ Q1, Q2, … , Qt ] adalah : Front(q) = Q1 Rear(q) = Qt Noel(q) = t Sebagai contoh untuk memperjelas kerjanya antrean, kita perhatikan sederetan operasi berikut ini, kita mulai dengan antrean hampa Q. Antrean hanpa Q = [ ] dapat disajikan pada gambar berikut Front(q) = tidak terdefinisi Rear(q) = tidak terdefinisi Noel(q) = 0

3 Lalu kita insert elemen A, diperoleh Q = [ A ]
Front(q) = A Rear(q) = A Noel(q) = 1 Lalu kita insert kembali elemen B, diperoleh Q = [ A B ] A B Rear(q) = B Noel(q) = 2 Dan kita remove (hapus) sebuah elemen dari Q maka diperoleh Q = [ B ]

4 B Front(q) = B Rear(q) = B Noel(q) = 1 Demikian seterusnya kita dapat melakukan serangkaian Insert dan delete (remove) yang lainnya. Suatu underflow dapat terjadi, apabila kita melakukan penghapusan pada antrean hampa. Antrean dikatakan beroperasi dalam cara First In First Out. disebut demikian karena elemen pertama yang masuk merupakan elemen yang pertama keluar. Dalam kejadian sehari-hari dapat kita lihat pada orang yang menunggu pada antrean suatu bank, orang pertama yang berada di dalam barisan tersebut akan merupakan orang pertama yang akan mendapat pelayanan.

5 Operasi dasar pada antrean
Ada 4 operasi dasar yang dapat dilakukan pada struktur data antrean, yaitu : Create (antrean) Isempty (antrean) Insert (elemen, antrean) Remove (antrean) Misalnya antrean Q = [ Q1, Q2, … , Qnoel ], maka ; create(q) adalah suatu operator untuk membentuk dan menunjukkan suatu antrean hamap Q Front(create(q)) = tidak terdefinisi Rear(create(q)) = tidak terdefinisi Noel(Create(q)) = 0

6 Isempty (antrean) Isempty (Q) adalah operator yang menentukan apakah antrean Q1 hampa atau tidak. Operand dari operator ini merupakan antrean, sedangkan hasilnya merupakan tipe data boolean, berarti : Isempty (q) = true, jika Q hampa, maka Noel = 0 Isempty (q) = false, jika sebaliknya Insert (elemen, antrean) Insert (E, Q) adalah operator yang menginsert elemen E ke dalam antrean Q. Elemen E ditempatkan dibagian depan dari antrean. Hasil dari operasi ini adalah antrean yang lebih panjang. Remove (antrean) Remove (q) adalah operator yang menghapus elemen bagian depan dari antrean Q. Hasilnya merupakan

7 antrean yang lebih pendek.
Jika Noel(q) = 0, maka remove (Q) memberikan suatu kondisi error, yaitu suatu underflow Penyajian dari Antrean Antrean dapat disajikan di dalam komputer dalam berbagai cara. Biasanya dengan menggunkan one way list (linier linked list) ataupun menggunakan array. Kalau tidak disebutkan lain, maka antrean kita sajikan dalam array queue, dengan dilengkapi 2 variabel petunjuk front, berisi lokasi dari elemen depan antrean dan rear berisi lokasi dari elemen belakang. Gambar berikut menunjukkan bagaimana menyajikan suatu antrean dalam sebuah array queue dengan N elemen. gambar ini juga menunjukkan bagaimana melakukan insert dan remove elemen.

8 Front = 1 Rear = 4 1 2 3 4 5 6 7 … N queue (b) Front = 2 Rear = 4
(c) Front = 2 Rear = 6 (d) Front = 3 AAA BBB CCC DDD BBB CCC DDD BBB CCC DDD EEE FFF CCC DDD EEE FFF

9 Gambar (a) menunjukkan bahwa antrean mula-mula terdiri
atas elemen AAA (sebagai depan), BBB, CCC, dan DDD (sebagai belakang). Gambar (b) menujukkan keadaan setelah penghapusan elemen. Disini elemen depan yaitu AAA dihapus. Gambar (c) menggambarkan keadaan setelah penambahan berurut-urut elemen EEE dan FFF. Gambar (d) elemen BBB dihapus. Dapat kita lihat bahwa pada setiap kali penghapusan, nilai lokasi front akan bertambah 1 untuk setiap kali pemasukan elemen, nilai rear akan bertambah 1. Hal ini berakibat bahwa setelah pemasukan elemen ke - n ( berawal dari antrean hampa), maka lokasi queue (n) telah diduduki. Disini mungkin saja tidak sebanyak n elemen ada didalam antrean (karena sudah dilakukan beberapa penghapusan). Untuk Melakukan pemasukan berikutnya, yakni memasukkan Elemeni ITEM, kita dapat menggunakan lokasi elemen (1).

10 A B Demikian seterusnya. Dalam hal ini kita menggunkan array
sirkular, yakni bahwa queue (1) datang setelah queue n di dalam array. Berdasarkan asumsi ini, maka rear adalah 1. Setara yang sama jika front = n dan kita akan melakukan penghapusan, maka sekarang front adalah 1, bukan n + 1. Gambar berikut memperlihatkan antrean yang disimpan dalam array dengan 5 lokasi memori, sebagai array sirkular Pada awal hampa queue Front = 0 Rear = 0 A dan Bdimasukkan Front = 1 Rear = 2 A B

11 A B C D E D E F D E C, D dan E dimasukkan queue Front = 1 Rear = 5
A, B, dan C dihapus Front = 4 F dimasukkan Rear = 1 A B C D E D E F D E

12 F E F G H E F G H D dihapus queue Front = 5 Rear = 1 1 2 3 4 5
G dan H dimasukkan Rear = 3 E dihapus Front = 1 F E F G H E F G H

13 Sekarang kita akan menampilkan algoritma Qinsert yang
dimaksudkan untuk memasukkan data ke dalam suatu antrean. Yang mula-mula kita lakukan dalam algoritma adalah memeriksa kemungkinan terjadi overflow, yaitu dengan melihat apakah antrean tersebut terisi penuh. Algoritma kedua adalah Qdelete yang dimaksudkan untuk menghapus elemen depan dari antrean. Yang mula-mula kita lakukan adalah memeriksa kemungkina terjadi underflow, yaitu dengan melihat apakah antrean tersebut kosong.

14 Algoritma Qinsert : {Apakah antrean penuh} jika front =1 & rear = n, atau jika front = rear + 1, maka write : overflow, return Jika front = null maka front = 1 rear = 1 dalam hal lain jika rear = n maka rear = 1 rear := rear + 1 Queue (rear) := data (masukkan elemen baru)

15 Algoritma Qdelete Qdelete (Queue, n, front, rear, data) {Apakah antrean kosong} jika front := null maka write : underflow return Data = queue (front) (front mendapat nilai baru). jika front = rear, maka (antrean memuat hanya 1 elemen) front := null rear := null dalam hal lain jika front = n, maka front := 1 front := front + 1 Return


Download ppt "4 QUEUE (ANTREAN) BAB Definisi Queue (antrean)"

Presentasi serupa


Iklan oleh Google