-->
logo blog

Saturday 22 April 2017

Pengertian dan implementasi queue dengan linear array


Salam giganesia , sebelum kita membahas tentang dan implementasi queue dengan linear array alangkah baik nya kamu mengetahui apa itu queue .
Oke Queue adalah suatu tipe data yang mengikuti pola First In First Out (FIFO), yang berarti elemen yang pertama masuk adalah elemen yang pertama pula dikeluarkan. Banyak contoh dalam kehidupan sehari-hari yang menerapkan konsep dari queue/antrian ini .

Contoh nya antrian pasien di ruang tunggu dokter, antrian nasabah yang nabung di bank dan lain sebaginya .

Dari gambar diatas ini kita bisa simpulkan bahwa dalam struktur antrian terdapat dua pintu yang menjadi patokan dalam melakukan setiap operasi didalam queue. Pintu yang pertama adalah pintu head, pintu ini adalah yang digunakan untuk meninggalkan antrian (loket). Pintu yang kedua adalah pintu tail. Pintu ini berkaitan dengan operasi penambahan item dalam antrian. Jadi dapat disimpulkan bahwa setiap penambahan elemen dalam antrian dilakukan pada tail dari antrian dan jika dilakukan pengurangan elemen, maka digunakan pada head.

Implementasi Queue dengan Linier Array
Untuk setiap struktur data queue yang diimplementasikan dengan array, posisi front (depan) back (belakang) akan selalu ada. Perhatikan gambar dibawah  ini menunjukkan ilustrasi dari sebuah queue yang diimplementasikan dengan menggunakan array. Dua hal yang menarik perhatian adalah (1) queue bergerak dari indeks kecil menuju indeks yang besar dan (2) diperlukan dua buah penunjuk (dalam ilustrasi disebut head dan tail)


Pada stuktur antrian linier terdapat dua pintu yaitu head dan tail. Dimana head ditempatkan pada awal array (index 0) dan tail ditempatkan pada pjg_max -1, sehingga dalam pemrograman dibutuhkan 2 variabel head dan tail. Pada struktur queueu dengan linier array terdapat beberapa operasi, yaitu:

       1.      Deklarasi queue
Operasi ini menciptakan struktur antrian dengan mendefiniskannya dalam struktur data struct of array.


        2.      Create
Operasi  ini menciptakan struktur queue siap untuk digunakan dengan mendefinisikan masing-masing variable head dan tail sehingga antrian dianggap kosong.


        3.     IsEmpty
Pada operasi ini dilakukan pengecekan terhadap queue, apakah kosong atau tidak. Jika queue mengembalikan nilai 1, maka dikatakan bahwa queue kosong, tetapi jika 0 maka sebaliknya. Pada operasi ini yang diperiksa adalah tail, karena yang mengindikasikan sebuah antrian terdapat elemen adalah dari tail-nya. Head tidak diperiksa karena head tidak akan berubah, hanya sebagai penentu elemen pertama dari antrian.


        4.     IsFull
Fungsi ini digunakan untuk mengecek apakah antrian penuh atau tidak. Hal ini dilakukan mengingat struktur yagng digunakan adalah array sehingga ada kemungkinan status penuh dalam elemen antrian. Operasi ini dilakukan dengan cara mengecek apakah tail sudah lebih atau sama dengan maksimum elemen – 1 atau tidak. Jika fungsi ini mengembalikan nilai 1 maka, antrian ini adalah penuh, jika mengembalikan nilai 0 maka dianggap belum penuh.


        5.     Enqueue
Untuk menambahkan sebuah elemen kedalam antrian diperlukan operasi penambahan pada variable tail, karena proses penambahan selalu terjadi pada elemen antrian yang terakhir. Penambahan elemen dilakukan dengan cara increment variable tail terlebih dahulu kemudian dimasukan data elemen kedalam antrian. Proses ini juga melakukan pengecekan apakah antrian sudah penuh ? karena pada antrian yang penuh, elemen tidak akan bisa ditambahkan pada antrian


        6.      Dequeue
Digunakan untuk melakukan penghapusan elemen tedepan atau elemen pertama pada antrian. Yang dilakukan adalah menggeser elemen sesudah head sampai tail kedepan kemudian lakukan pengurangan pada tail yaitu tail-1. Penggeseran dilakukan dengan menggunakan looping.
        7.      Clear
Fungsi clear sama dengan fungsi create yaitu membuat elemen menjadi kosong dengan cara memposisikan head dan tail ke index -1. Dan yang terakhir
        8.      Tampil
Fungsi ini bertujuan untuk menampilkan semua elemen yang terdapat pada antrian. Yaitu elemen yang ada dari head sampai tail. Prosesnya juga sama yaitu dengan melakukan looping dan mengunakan fungsi print setiap elemen dikunjungi.


Kelemahan dari struktur elemen dengan linier array ini  yaitu menciptakan ruang kosong didepan struktur antrian sehingga ketika tail sudah sampai pada nilai maksimum dan head berada ditengah-tengah, maka antrian ini dianggap penuh, walaupun didepan struktur antrian masih terdapat space yang kosong.
Sekian semoga bermanfaat 


EmoticonEmoticon