SemutAspal

Definisi dan Contoh Queue Struktur Data

Contoh queue struktur data
Contoh queue struktur data

Apa Itu Queue?

Pengertian queue adalah antrian. Konsep antrian dalam struktur data sangat berguna. Pada queue, kita hanya bisa menambahkan elemen baru di satu sisi yang disebut rear, sementara untuk menghapus atau mengambil elemen dilakukan dari sisi lain.

Contohnya yang paling mudah dipahami adalah antrian. Cara kerja antrian mengikuti aturan FIFO, yaitu yang masuk duluan akan dikeluarkan duluan. Sedangkan aturan “Masuk Terakhir, Pertama Keluar” (LIFO) diterapkan pada stack atau tumpukan.

Bayangkan antrian seperti garis yang memiliki sebuah jalan masuk di ujung satu dan sebuah jalan keluar di sisi lain. Ada tanda yang menunjukkan mulai dan akhirnya. Dalam antrian, ada dua tugas penting:

  1. Tambah: menambahkan elemen baru ke dalam queue.
  2. Hapus: mengeluarkan atau menghapus elemen dari queue.

Dalam dunia komputer, antrian digunakan banyak terutama dalam pengaturan sistem operasi dan sumber daya. Misalnya, di dalam sistem komputer time-sharing, beberapa orang dapat menggunakan komputer secara bersamaan.

Tetapi, ada variasi dalam konsep antrian. Salah satunya adalah antrian dengan prioritas yang dikenal dengan “add_priority”.

Promo garansi Shopee

Pada hal tersebut, queue tidak lagi mengikuti konsep murni. Namun, ia mengutamakan elemen-elemen berdasarkan prioritas tertentu. Ini berarti elemen baru yang ditambahkan tidak selalu di akhir antrian.

Operasi Antrian

a. Create

Dalam membuat dan memulai antrian, langkah pertama adalah proses pembuatan kepala (head) dan ekor (tail) dengan angka -1 yang solid.

b. IsEmpty

IsEmpty digunakan untuk mengidentifikasi apakah suatu antrian penuh dengan melihat nilai tail. Bila tail memiliki nilai -1, ini menunjukkan bahwa antrian kosong.

Pada pengecekan, kita tidak perlu memperhatikan nilai head karena merupakan elemen pertama pada antrian dan tetap konstan. Dalam operasi antrian, pergerakan terjadi dengan menambahkan elemen baru ke bagian belakang antrian, dan ini dilakukan dengan memanipulasi nilai ekor.

c. IsFull

IsFull digunakan untuk melakukan pengecekan apakah antrian telah mencapai kapasitas maksimal dengan cara memeriksa nilai tail.

Bila nilai tail lebih besar atau sama dengan MAX-1, maka ini menunjukkan bahwa antrian telah mencapai kondisi penuh sebab MAX-1 menandakan batas elemen pada array dalam bahasa pemrograman C.

d. EnQueue

EnQueue berperan dalam operasi penambahan elemen baru ke antrian, di mana elemen baru selalu dimasukkan ke dalam posisi paling belakang. Saat elemen baru ditambahkan, langkah pertama adalah menggerakkan tail dengan menambahkan nilai ke counter tail.

Hal ini dilakukan untuk mengindikasikan bahwa elemen baru telah ditambahkan ke dalam antrian dan tail sekarang menunjuk ke posisi terbaru dalam antrian.

e. DeQueue

DeQueue digunakan dalam operasi penghapusan elemen kepala dari antrian. Proses penghapusan ini melibatkan pergeseran semua elemen dalam antrian ke arah depan, yang dilakukan dengan mengurangi nilai tail sebanyak 1 dan menggunakan pengulangan untuk menggeser elemen-elemen tersebut.

Dengan demikian, elemen terdepan dapat dihapus dari antrian dan antrian akan mengalami penyusutan ukuran.

f. Clear

Clear diaplikasikan untuk melakukan penghapusan elemen-elemen dari queue dengan cara mengatur nilai kepala dan ekor menjadi -1. Pada dasarnya, proses penghapusan komponen ini tidak melibatkan penghapusan array itu sendiri.

Namun, yang dilakukan adalah mengubah nilai indeks pengaksesan komponen antrian menjadi -1. Hasilnya, elemen-elemen yang ada tidak lagi dapat diakses atau terbaca, sehingga secara efektif antrian menjadi kosong.

g. View

View digunakan untuk menghasilkan tampilan nilai-nilai dari elemen-elemen dalam antrian dengan melakukan pengulangan dari elemen yang ditunjuk oleh head hingga elemen yang ditunjuk oleh tail.

Susunan Linear

Pengertian queue dalam informatika
Pengertian queue dalam informatika

Linear array merupakan barisan yang tampak seperti garis lurus dan hanya memiliki satu jalan keluar beserta satu jalan masuk. Berikut diberikan contoh bagaimana kita bisa membuat kelas antrian linear array.

Tentunya, implementasinya bisa disesuaikan dengan apa yang kita butuhkan. Kita bisa mengakses data melalui variabel ‘data’, sementara indeks dari item awal dan terakhir terdapat pada variabel ‘head’ dan ‘tail’.

Pada saat kelas dibuat, konstruktor akan mengatur nilai awal dari ‘head’ dan ‘tail’ menjadi -1 untuk menandakan bahwa antrian kosong. Selain itu, konstruktor juga akan mengalokasikan ruang di memori sebanyak nilai ‘MAX_QUEUE’ yang ditunjuk variabel ‘data’.

Dan ketika kelas ini tidak lagi dibutuhkan, destruktor segera mengosongkan antrian dan mengembalikan memori yang sebelumnya dialokasikan untuk antrian tersebut.

Operasi Susunan Linear

a. IsEmpty

IsEmpty memiliki tujuan untuk memeriksa apakah antrian telah diisi dengan elemen atau masih dalam kondisi kosong. Langkah ini dijalankan dengan memeriksa apakah nilai tail sama dengan -1. Jika nilai tail adalah -1, ini menandakan bahwa antrian masih dalam keadaan kosong atau tidak terisi.

b. IsFull

IsFull memiliki peran dalam memeriksa apakah antrian telah penuh atau belum sehingga masih memiliki ruang untuk menampung data baru.

Hal ini dijalankan dengan membandingkan nilai tail dengan maksimal elemen yang dapat ditampung oleh antrian. Jika nilai tail sama dengan jumlah maksimal elemen, maka ini mengindikasikan bahwa antrian telah mencapai batas kapasitasnya.

c. EnQueue

EnQueue memiliki peran penting dalam mengintegrasikan sebuah komponen ke dalam struktur queue.

d. DeQueue

DeQueue memiliki tujuan utama dalam mengambil elemen tertentu dari antrian. Tindakan ini kadang-kadang dikenal sebagai “serve”.

Prosesnya melibatkan perpindahan elemen ke posisi yang lebih depan dengan jarak satu langkah, sehingga elemen paling depan secara otomatis akan tertimpa oleh elemen setelahnya.

e. Clear

Clear memiliki peran penting dalam mengosongkan antrian dengan menghapus semua elemen yang ada di dalamnya secara bertahap.

Proses ini dilakukan dengan menggunakan fungsi DeQueue untuk mengambil dan menghapus setiap elemen dari antrian hingga antrian benar-benar kosong.

Susunan Melingkar

Contoh antrian queue
Contoh antrian queue

Circular array berbentuk seperti lingkaran yang memiliki head dan tail yang saling berdekatan ketika array itu masih belum berisi data. Letak kepala dan ekor bisa ditempatkan di mana saja selama keduanya saling berdampingan.

Dalam contoh berikut, kita akan melihat bagaimana kelas antrian circular dibuat menggunakan circular array. Implementasi ini bisa disesuaikan sesuai kebutuhan. Data dapat diakses melalui variabel ‘data’, dan posisi item awal dan terakhir tersimpan dalam variabel ‘head’ dan ‘tail’.

Pada saat kelas dibuat, konstruktor akan mengatur nilai awal dari ‘head’ menjadi 0 dan ‘tail’ menjadi MAX_QUEUE-1 untuk menandakan bahwa antrian kosong.

Selain itu, konstruktor juga akan mengalokasikan ruang di memori sebanyak nilai ‘MAX_QUEUE’ yang ditunjuk variabel ‘data’. Ketika kelas tidak lagi diperlukan, destruktor segera mengosongkan antrian dan mengembalikan memori yang sebelumnya dialokasikan untuk antrian tersebut.

Operasi Susunan Melingkar

a. IsEmpty

IsEmpty memiliki peran dalam mengidentifikasi apakah antrian sudah mengandung elemen atau masih dalam keadaan kosong.

Proses ini dijalankan dengan memeriksa apakah nilai tail lebih tinggi dari nilai head, dan juga memastikan bahwa tail masih berada sebelum head. Bila kedua kondisi ini terpenuhi, maka antrian dianggap kosong atau tidak terisi.

b. IsFull

IsFull memiliki peran penting dalam memverifikasi apakah antrian telah penuh atau tidak sehingga masih memiliki kemampuan untuk menampung data.

Pendekatan ini dilakukan dengan mengamati apakah hanya tersisa satu slot kosong yang tersedia atau tidak. Jika kondisi ini terpenuhi, maka antrian dianggap telah mencapai memenuhi kapasitas.

c. EnQueue

EnQueue memiliki peran dalam menyisipkan elemen baru ke dalam antrian dengan cara menempatkannya di posisi tail. Pada saat elemen ditambahkan, nilai head dan tail akan diatur ke nilai awal, yaitu nol.

d. DeQueue

Fungsi DeQueue memiliki tujuan utama dalam mengambil elemen dari antrian. Prosesnya melibatkan perpindahan posisi head ke posisi yang berada di sebelahnya.

Soal Queue

Berikut ini disajikan beberapa solusi untuk pertanyaan-pertanyaan terkait dengan konsep antrian dalam konteks kehidupan sehari-hari. Jika kamu memiliki pertanyaan lain yang belum tercakup, silakan tinggalkan komentar sehingga kita bisa bersama-sama menemukan jawabnya.

Berikan contoh situasi atau kejadian di mana antrian digunakan dalam kehidupan sehari-hari!

Situasi antrian saat mengunjungi dokter mengikuti aturan tertentu. Orang pertama yang mengantri akan ditempatkan di posisi terdepan dalam antrian. Ini berarti bahwa individu yang berada di posisi terdepan akan menjadi prioritas utama dalam menerima pelayanan medis atau pengobatan dari dokter.

Jelaskan bagaimana operasi ADD_priority berfungsi!

Add_priority atau antrian prioritas melibatkan penggunaan null, dan penting untuk memahami bahwa tidak semua objek dapat digunakan dalam pembentukan antrian prioritas.

Dalam konteks ini, setiap kelas yang kita buat dalam bahasa pemrograman Java perlu mematuhi prinsip kesesuaian sehingga objek-objek tersebut dapat dibandingkan.

Hal ini mencakup penggunaan antarmuka sebanding (comparable) dan antarmuka komparator (comparator) untuk mengurutkan objek-objek serta menentukan prioritas elemen-elemen dalam antrian. Maka, elemen-elemen dapat diolah sesuai dengan prioritas yang telah ditetapkan.

Jelaskan perbedaan antara stack dan array dalam struktur data queue beserta contoh penggunaan dalam kehidupan!

Pada dunia struktur data, terdapat dua konsep yang berbeda yaitu susunan dan tumpukan dengan karakteristik yang sangat berbeda satu sama lain.

Stack menggunakan prinsip LIFO, yang terakhir dimasukkan akan menjadi yang pertama dikeluarkan; yang pertama dimasukkan akan menjadi yang terakhir dikeluarkan.

Itu berarti ketika kita menghapus atau mengambil data dari stack, elemen yang paling terakhir dimasukkan akan diambil pertama kali.

Contoh stack dalam kehidupan sehari-hari bisa kamu lihat pada proses mengeluarkan genteng dari dalam mobil. Pada kondisi ini, genteng yang diambil akan selalu berasal dari tumpukan paling atas, meskipun genteng tersebut paling akhir diletakkan.

Sementara itu, array beroperasi dengan metode FIFO, yang pertama dimasukkan akan menjadi yang pertama dikeluarkan; yang terakhir dimasukkan akan menjadi yang terakhir dikeluarkan.

Itu berarti ketika data dihapus atau diambil dari array, elemen yang pertama dimasukkan akan diambil terlebih dahulu.

Dengan analogi yang sama, kita bisa membayangkan proses antrian di dalam toko atau loket layanan pelanggan, di mana orang yang pertama kali datang akan dilayani pertama kali sebelum mereka yang datang kemudian.

Contoh array adalah saat kita ikut mengantre hingga nomornya dipanggil ketika mengantre di SPBU atau ketika membayar pajak.

Penutup

Selesai sudah artikel tentang materi queue ini. Mudahnya, queue artinya antrian. Semoga kini paham apa yang dimaksud dengan queue serta contoh queue yang ada di kehidupan sehari-hari.


Dapatkan berita terbaru! Ikuti kami di Google News dan dapatkan kabar terupdate langsung di genggaman.

Promo garansi Shopee
Yosua Herbi
Herbi adalah seorang Web Developer asal Jawa Tengah lulusan D-3 Manajemen Informatika. Memiliki pengalaman dan kecintaan di bidang geopolitik, keuangan, pemrograman, digital marketing, dan sosial.