Sesuai dengan namanya, queue adalah sebuah struktur data yang menerapkan konsep antrian yang terjadi di dunia nyata.

Queue menggunakan konsep FIFO (First In First Out), yang artinya adalah “siapa yang datang pertama, maka ia yang akan keluar pertama”.

Dalam artikel kali ini, sudah ada sebuah program dengan bahasa pemrograman C yang menerapkan konsep queue itu tadi.

Fungsi dari program ini adalah untuk memproses antrian di mana contoh yang diambil adalah antrian di bank.

Kemudian tiap data antrian yang masuk ke dalam queue merupakan sebuah data dengan tipe data struct.

Mungkin itu saja untuk pendahuluannya, silahkan langsung beralih ke sintaks dari program.

 

Sintaks Program


Sintaks program yang sudah ada bisa kalian lihat melalui link berikut, hanpalla/Program-struktur-data-antrian (github.com).

Untuk artikel kali ini tidak akan menyajikan contoh output karena akan butuh banyak gambar untuk menampilkan keseluruhan program.

Maka dari itu, silahkan salin kode dari program dan cobalah untuk menjalankannya sendiri.

Setelah mencoba menjalankan program, mungkin bisa lanjut untuk membaca tentang penjelasan dari program.

 

Penjelasan Program


Penjelasan program kali ini akan terbagi menjadi tiga bagian yaitu bagian pendahuluan, manipulasi antrian dan bagian ilustrasi.

Mari kita mulai dari bagian pendahuluan.

 

Pendahuluan

Pertama, tadi sudah dijelaskan bahwa data yang ada di dalam queue merupakan data dengan tipe data struct.

Alasan dari penggunaan struct adalah untuk mengelompokkan banyak data menjadi satu kelompok.

Hal ini karena satu orang yang mengantri memiliki banyak atribut data seperti nomor urut, nama dan sebagainya.

Kemudian di dalam program ini juga terdapat variabel head, tail dan variabel isi yang memiliki peran penting dalam mengatur antrian yang ada.

Variabel head akan diam di data terdepan, variabel tail akan diam di data paling belakang dan variabel isi akan mencatat seberapa banyak orang yang mengantri.

Pencatatan seberapa banyak orang yang mengantri dilakukan karena slot antrian yang terbatas.

Ketiga variabel tadi memiliki nilai awal yang sama yaitu 0, namun nilai ini bisa berubah tergantung dari antrian yang ada nantinya.

Sekian untuk pendahuluan, sekarang beralih ke pembahasan dari bagaimana program memanipulasi antrian.

 

Manipulasi Antrian

Bagian ini terbagi menjadi dua buah bagian, yaitu bagaimana antrian bertambah dan bagaimana antrian paling depan terhapus.

Untuk antrian yang bertambah, program akan terlebih dahulu memeriksa apakah slot antrian sudah terisi penuh.

Jika tidak terisi penuh, program akan lanjut untuk meminta pengguna mengisi rincian data antrian.

Setelah mengisi rincian data antrian tersebut, maka program akan menaruh data tadi pada indeks dengan nilai yang sama dengan nilai dari variabel tail saat itu.

Setelah itu nilai dari variabel tail dan variabel isi sama-sama akan bertambah 1.

Kemudian untuk bagian penghapusan antrian, program akan memeriksa terlebih dahulu apakah di dalam antrian sudah ada data minimal 1 saja.

Jika sudah ada, maka data antrian paling depan akan dihapus dengan menjumlahkan nilai dari variabel head dengan 1.

Di saat yang sama nilai dari variabel isi akan berkurang 1 karena ada 1 data yang keluar dari antrian.

 

 

Ilustrasi

Jika masih bingung dengan penjelasan pada bagian sebelumnya, silahkan simak gambar berikut dan penjelasannya di bawahnya.

Ilustrasi Antrian Array

1. Barisan paling awal menunjukkan array yang memiliki empat data dan belum terjadi adanya pemanggilan antrian.

2. Barisan kedua menunjukkan antrian yang sudah berubah akibat adanya penghapusan kepada antrian pertama.

Bisa terlihat bahwa variabel head akan berpindah tempat di saat penghapusan antrian terjadi.

Meskipun penghapusan seolah-olah berhasil, sebenarnya antrian dengan status head sebelumnya masih ada dan tidak hilang atau terhapus dari array.

3. Barisan ketiga menunjukkan antrian yang mengalami penambahan antrian setelah terjadinya penghapusan.

Terlihat bahwa antrian yang sebelumnya menjadi head masih ada karena tidak dihapus, melainkan hanya tidak dianggap.

4. Lalu saat pengguna meminta untuk menampilkan keseluruhan antrian, maka program hanya akan mencetak antrian yang kotaknya masih hitam atau mulai dari head sampai tepat satu antrian sebelum tail.

Penerapan antrian pada program ini bisa dibilang tidak disarankan karena sejatinya hanya nilai dari head saja yang berpindah tempat saat terjadi penghapusan antrian.

Meskipun head berpindah indeks, data di dalam antrian yang berada di luar jangkauan masih tetap ada dan tidak terhapus.

Hal ini bisa diperbaiki dengan cara yang berbeda seperti contohnya menggunakan konsep dynamic allocation.

 

Rangkuman


Sekian saja untuk program yang sederhana pada artikel kali ini.

Silahkan dipelajari dari sintaks yang ada dan juga penjelasan yang sudah disediakan mengenai konsepnya.

Konsepnya sederhana, hanya struktur data array yang setiap di dalamnya merupakan data struct.

Setelah itu array yang ada akan berjalan menggunakan konsep queue.

Program ini masih banyak kelemahan, seperti contohnya ruang di dalam memori yang tidak ikut terhapus saat terjadi penghapusan antrian terdepan.

Untuk itu, kalian bisa carikan solusinya atau mengganti array menggunakan linked list.

Mungkin itu saja untuk kali ini, terima kasih.

Bagikan:

Hans

Saya hanya manusia biasa yang ingin membagi ilmu dengan tulisan.