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