QUEUE PADA JAVA
LAPORAN PRAKTIKUM STRUKTUR DATA
oleh
Luckyta Citra Ayu Paramitha
171810101015
LABORATORIUM MATEMATIKA DASAR
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS JEMBER
2018
A. DASAR TEORI
Queue jika diartikan secara harfiah, queue berarti antrian, Queue merupakan
suatu struktur data linear. Queue adalah suatu struktur data yang berupa tumpukan
atau susunan-susunan dimana proses menginputkan dan mengoutputkan data
dilakukan melalui dua pintu yang berbeda, yaitu dapat melalui sisi depan dan
belakang. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi
penambahan dan penghapusan pada ujung yang bebeda. Karakteristik yang
terpenting dari Queue yaitu bersifat FIFO (First In First Out) artinya data yang
pertama kali masuk merupakan data yang akan keluar terlebih dahulu. Model
antrean, sangat sering ditemukan dalam kejadian sehari-hari yaitu antrian tunggu.
Contoh lainnya seperti mobil yang menunggu untuk pengisian bahan bakar, mobil
pertama dari antrean merupakan mobil pertama yang akan keluar dari antrean.
Sebagai contoh lain adalah orang yang menunggu dalam antrean di suatu bank.
Orang pertama yang berada di dalam barisan tersebut akan merupakan orang
pertama yang akan dilayani.
Antrean dapat disajikan di dalam komputer dalam berbagai cara. Biasanya
dengan menggunakan one-way-list (linear linked list) ataupun menggunakan
array. Kalau tidak disebutkan lain, maka antrean disajikan dalam array queue,
dengan dilengkapi dua variabel penunjuk. front, berisi lokasi dari elemen depan
antrean dan rear, berisi lokasi dari elemen belakang antrean. nilai front = null
menunjukkan bahwa antrean adalah hampa. Pada gambar 1, ditunjukkan
penggambaran ilustrasi Queue. Gambar tersebut mengilustrasikan proses
bagaimana masuknya data, dan bagaimana proses pengeluaran data yang melalui
sisi yang berbeda dengan tempat masuknya tadi.
Gambar 1Ilustrasi Queue
Terdapat empat operasi dasar yang dapat dilakukan pada queue, diantaranya
yaitu :
1. Operasi Enqueu, untuk menambahkan elemen ke dalam Antrian, penambahan
elemen selalu ditambahkan di elemen paling belakang Penambahan elemen
selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih
dahulu. Jadi, pada proses enqueue, tail-lah yang berjalan seiring masuknya
data baru ke dalam antrian, sedangkan head akan tetap pada posisi ke-0.
2. Operasi Dequeu, untuk menghapus elemen terdepan atau pertama (head) dari
antrian dengan cara menggeser semua elemen antrian kedepan dan
mengurangi Tail sebanyak 1. Misalkan head berada pada indeks ke-0, maka
ketika akan mengeluarkan atau menghapus data pada posisi paling depan
(pada posisi head), prosedur ini akan menaikkan posisi head ke indeks array
ke-1. Penggeseran dilakukan dengan menggunakan looping.
3. Operasi IsEmpty, untuk memeriksa apakah antrian sudah penuh atau belum.
Pemeriksaan dilakukan dengan cara memeriksa nilai tail, jika tail sama
dengan -1, maka empty. Kita tidak memeriksa head, karena head adalah tanda
untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan
berubah-ubah. Pergerakan pada antrian terjadi dengan penambahan elemen
antrian kebelakang, yaitu menggunakan nilai tail.
4. Operasi IsFull, untuk mengecek apakah antrian sudah penuh atau belum.
Pengecekan dilakukan dengan cara mengecek nilai tail, jika tail lebih dari
sama dengan max-1 (karena max-1 adalah batas elemen array) berarti sudah
penuh
5. Operasi Clear, untuk menghapus elemen-elemen antrian dengan cara
membuat Tail dan Head sama dengan -1. Penghapusan elemen-elemen antrian
sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks
pengaksesan-nya ke nilai -1 sehingga elemen-elemen antrian tidak lagi
terbaca.
6. Tampil ( ), Untuk menampilkan nilai-nilai elemen antrian menggunakan
looping dari head sampai dengan tail.
Queue terbagi menjadi beberapa macam, diantaranya :
1. Queue dengan Linear Array, linear array adalah suatu array yang dibuat
seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu
pintu keluar.
2. Queue dengan Circular Array, circular array adalah suatu array yang dibuat
seakan-akan merupakan sebuah lingkaran dengan titik awal (head) dan titik
akhir (tail) saling bersebelahan jika array tersebut masih kosong.
3. Queue dengan Linked-List, selain menggunakan array, queue juga dapat
dibuat dengan linked list. Metode linked list yang digunakan adalah double
linked list
B. ALAT DAN BAHAN
Adapun beberapa alat dan bahan yang dapat digunakan pada praktikum
mengenai stack pada java, diantaranya yaitu :
1. Komputer / Laptop.
2. Keyboard.
3. Software Eclipse.
4. Software Java.
C. LANGKAH-LANGKAH
Langkah awal dalam menjalankan praktikum queue pada java yaitu dengan
membuat project class terlebih dahulu. Klik menu file, kemudian new, dan pilih
Java Project. Beri nama project tadi dengan “laporan_keempat”. Buat class pada
project yang laporan_keempat tadi. Beri nama Java Class dan centang pada check
box public static void main string, kemudian klik finish. Setelah Java Project dan
Java Class selesai dibuat, berikut adalah langkah lebih lanjut untuk membuat
queue pada Java :
1. Buka Class tadi, dan ketikkan perintah seperti pada gambar 2 dibawah ini
pada workspace eclipse.
Gambar 2 sintak Java Class
Pada gambar 1, penulisan sintak dimulai dari inisialisasi variable Queue
terlebih dahulu dengan panjang array 3. Kemudian, dilanjutkan dengan
menambahkan tiga elemen 1,2, dan 3 menggunakan queue.Enqueue yang
sintaknya berada pada class yang berbeda dengan kelas utama. Perintah
queue.tampilkan dan queue.Dequeue juga terletak pada kelas yang berbeda.
Perintah tampilkan disini bertujuan untuk menampilkan data queue, dan perintah
dequeue digunakan untuk menghapus elemen awal dari queue.
2. Buat kelas file baru(new class) untuk membuat kelas Queue, dan ketikkan
perintah seperti pada gambar 3 dibawah.
Gambar 3 Kelas Queue
Dimulai dari pendeklarasian variable data, head, dan tail. Head di set bernilai
kosong, dan tail diset bernilai -1. Buat method konstruktor Queue, dan buat
inisialisasikan variable data sebagi panjang dari Queue. Sehinga nilai dari panjang
data didapatkan apabila kita menginputkan nilai pada sintak Queue di kelas utama
baris ke enam. Lalu, cek kekosongan data dari queue dengan nama method
isEmpty(), menggunakan perintah pemilihan if..else. jika tail bernilai sama
dengan -1, maka akan dikembalikan pada nilai true, tetapi jika tail bernilai else
atau selain sama dengan -1, maka nilai akan dikembalikan pada false. Pada
method isFull, jika nilai tail sama dengan panjang data dikurangi 1, maka akan
dikembalikan pada true, apabila tidak sama akan dikembalikan pada nilai false.
Selanjutnya yaitu method Enqueue, Dequeue, dan tampilkan. Method
Enqueue menggunakan perintah pemilihan if..else. apabila dataBaru bernilai
kosong (belum ada data yang masuk), maka tail akan bernilai sama dengan head,
yaitu nol dan data[0] akan bernilai sesuai dengan yang diinputkan di dataBaru.
Pemilihan kedua akan dijalankan apabila sebelumnya telah terdapat data tetapi
tidak penuh. Tail akan bertambah satu, dan indeks data kedua akan bernilai
dataBaru yang dimasukkan. Jika banyak data telah memenuhi dan sesuai dengan
panjang data, maka akan ditampilkan “antrian sudah penuh”.
Method Dequeue menggunkan perintah perulangan for dan didalamnya
terdapat pengembalian nilai temp. apabila i bernilai sama dengan head, dan
kurang dari nilai tail, maka perintah tersebut akan terus berulang. Pada method
tampilkan, jika data tidak kosong, maka perintah if dijalankan dan akan
ditampilkan seluruh data dengan perulangan while yang didalamnya telah terdapat
perintah print. Apabila data telah habis, dan kita tetap menggunakan preintah
tempilkan, maka akan muncul “kosong”.
3. Jalankan perintah yang telah dibuat tadi dengan mengklik tombol run.
Sehingga didapatkan hasil seperti gambar berikut
Gambar 4 Hasil yang didapatkan
Jika ingin membuat seperti pada tampilan berikut ini :
Gambar 5 Hasil yang dioutputkan
Maka yang pada kelas Queue dapat ditambahkan method periksa. Method
periksa ini digunakan untuk mengecek penuh dan tidak penuhnya suatu queue.
Method ini menggunakan perintah pemilihan if..else.
Gambar 6 Sintak untuk mengehasilkan output gambar 5
Gambar 7 tambahan sintak pada kelas Queue
Pada method periksa di kelas Queue, menggunakan perintah pemilihan if.
Pemilihan pertama mengecek penuh tidaknya suatu queue, yang mana method
isFull telah dibuat sebelumnya. Sehingga, apabila queue penuh, maka ditampilkan
“penuh”. Pemilihan yang kedua mengecek kekosongan dari queue. Method dari
isEmpty juga telah dibuat sebelumnya, dan apabila terpenuhi akan ditampilkan
“kosong”. Pemilihan ketiga dijalankan apabila queue tidak kosong, dan queue
tidak penuh.
“periksa” pertama pada kelas utama, menghasilkan output penuh karena data
dari queue penuh (1,2, dan 3) dan belum dikurangi dengan Dequeue. Pada
“periksa” yang kedua menghasilkan output belum penuh karea queue telah
melewati proses Dequeue satu kali, sehingga data yang semula berjumlah tiga,
berkurang menjadi dua (belum penuh). Perintah “tampilkan” pertama kali
menghasilkan output “kosong” kareda Queue belum memiliki nilai dari Enqueue.
D. PENANGANAN EROR
Berikut adalah penanganan error yang sering terjadi pada praktikum
mengenai Queue pada Java ini :
1. Error yang disebabkan karena berbedanya perintah dequeue dengan method
pada kelas queue. Pada kelas queue menggunakan Q besar. Sehingga queue
pada kelas utama tidak akan terdefinisi dan dijalankan. Penyelesaiannya yaitu
menyesuaikan antara perintah pada kelas utama dengan method yang dibuat.
2. Error yang disebabkan karena belum dibuatnya method isFull terlebih dahulu
sebelum menggunakannya. Penyelesaiannya yaitu dengan membuat method
isFull terlebih dahulu agar variable isFull dapat dieksekusi oleh eclipse.
3. Error karena ketidak lengkapan tanda. Untuk menambah data sebanyak 1,
seharusnya menggunakan dua buah tanda +. Penyelesaiannya yaitu dengan
menggunakan tanda dengan lengkap, benar, dan sesuai.
E. PENYELESAIAN TUGAS
a. Tambahkan method Clear untuk menghapus semua data pada queue.
b. Buatlah program iterative seperti pada modul enam.
Pembahasan :
a.
Method yang ditambahkan pada kelas Queue :
b.
Hasil yang dioutputkan :