QUEUE pada C++
A. Pengertian Queue
Queue
(Antrian) adalah suatu kumpulan data yang mana penambahan data / elemen hanya dapat
dilakukan pada sisi belakang sedangkan penghapusan / pengeluaran elemen
dilakukan pada sisi depan. Jenis struktur data antrian sering digunakan untuk
menstimulasikan keadaan dunia nyata. Antrian banyak dijumpai dalam kehidupan
sehari-hari. Misal : antrian registrasi mahasiswa, tiket kereta api dan
lain-lain. Berbeda dengan stack, prinsip yang digunakan dalam antrian adalah
FIFO ( First In First Out ). Dengan kata lain, urutan keluar elemen akan sama
dengan urutan masuknya.
Dalam antrian
tidak semuanya dilakukan secara FIFO murni, contoh yg relevan dalam bidang
komputer adalah Time-sharing Computer
System, dimana ada sejumlah pemakai (user) yg menggunakan sistem tersebut
secara serempak. Karena sistem ini biasanya menggunakan processor, dan sebuah
memory utama. Jika processor sedang dipakai oleh seorang user, maka user yang
lain harus antri sampai gilirannya. Antrian ini tidak akan dilayani secara FIFO
murni tetapi biasanya didasarkan pada suatu prioritas tertentu. Antrian yang
memasukkan unsur prioritas dinamakan dengan ANTRIAN PRIORITAS ( PRIORITY QUEUE
).
Elemen yang
pertama kali masuk ke antrian akan keluar pertama kalinya. DEQUEUE adalah
mengeluarkan satu elemen dari suatu antrian. Terdapat satu buah pintu masuk di
suatu ujung dan satu buah pintu keluar di ujung satunya sehingga membutuhkan
variabel Head dan Tail.
B. Deklarasi Queue dalam program
Sebuah queue di dalam program komputer dideklarasikan
sebagai sebuah tipe bentukan baru, di dalam Bahasa C, biasa disebut struct.
Sebuah struktur data dari sebuah queue setidaknya harus mengandung dua tiga
variabel, yakni variabel HEAD yang akan berguna sebagai penanda bagian depan
antrian, variabel TAIL yang akan berguna sebagai penanda bagian belakang
antrian dan ARRAY DATA dari yang akan menyimpan data-data yang dimasukkan ke
dalam queue tersebut. Sebagai contoh kita akan membuat queue dengan data
maksimal sebanyak 7 data :
Deklarasi
dari program nya :
1. IsEmpty
Sama seperti di Stack, IsEmpty berguna untuk mengecek
apakah queue kosong atau tidak.
Indikator bahwa queue kosong adalah nilai dari head dan tail bernilai
-1. Sehingga kita tinggal buat fungsi
nya sebagai berikut :
2. IsFull
Operasi IsFull digunakan untuk mengecek apakah queue
sudah penuh atau belum. Indikator kalau
queue penuh adalah nilai tail = max – 1.
Mengapa? karena nilai maksimal pada array yang mempunyai index 7 pada
saat diakses akan mempunyai nilai maksimal 6.
Sehingga fungsi yang terbentuk seperti ini :
3. Enqueue
Enqueue digunakan untuk memasukkan data kedalam
queue. Sama seperti push dalam stack.
Sebelum memasukkan data kedalam antrian, kita harus mengecek terlebih dahulu
apakah queue / antrian sudah penuh atau belum.
Kalau belum maka kita harus mengecek apakah head sudah berada pada nilai
0 atau belum. Ini sangat penting karena
nilai head tidak akan lebih dari 0.
PERLU DIPERHATIKAN ! Yang akan
bergerak terus adalah tail, sedangkan head hanya penunjuk urutan paling depan,
sehingga nilainya tidak pernah lebih dari 0.
Kecuali antrian kosong, maka posisi head dan tail akan kembali menjadi-1.
4. Dequeue
Kebalikan dari fungsi enqueue, dequeue digunakan untuk
mengambil data yang sudah masuk di urutan pertama. Sehingga kita tinggal
membaca data yang ada di posisi head.
Nah inilah fungsi dari head.
Jangan lupa kita cek dulu apakah queue kosong atau tidak. Tapi jika ada isinya, setelah data diambil,
data dibelakangnya digeser ke depan.
5. Clear
Operasi clear digunakan untuk menghapus data yang ada di
dalam queue. Caranya cukup merubah nilai
pada head dan tail menjadi -1. Tidak
perlu diperhatikan data yang ada di dalam array. Nantinya data data tersebut juga akan
ditimpa.
6. View
Operasi ini digunakan untuk melihat data yang ada didalam
queue. Caranya adalah dengan membaca
data pada index yang terdapat diantara head sampai tail.
C. Contoh program Queue
& Hasil running nya
Hasil Running nya :
DAFTAR PUSTAKA
RIDHO RAMADHAN
1801301095
TERIMAKASIH!!!
Kunjungi blog kita
yang lain gaesss!!!!
kalo flowcartnya gmna??
BalasHapus