Dokumen ini membahas tentang antrian (queue) sebagai struktur data yang menyimpan data sesuai urutan masuknya (FIFO). Terdapat beberapa metode pada antrian seperti enqueue, dequeue, peek, dan isEmpty. Antrian dapat diimplementasikan menggunakan list atau array dengan menambahkan data di belakang dan mengambilnya dari depan. Contoh kode C++ mendemonstrasikan implementasi array queue integer.
2. Pendahuluan
Antrian adalah sebuah struktur penyimpanan data yang
menyimpan data sesuai urutan dan proses pengambilan
seperti antrian.
Antrian memiliki prinsip First in First Out (FIFO). Karena
seperti layaknya antrian, data yang dimasukkan pertama
akan diambil terlebih dahulu.
3. Metode pada Antrian
Terdapat beberapa method dasar pada queue:
1. Enqueue : menambahkan data ke queue di paling
belakang
2. Dequeue : mengambil dari antrian paling depan,
elemen akan hilang
3. Peek : memeriksa data antrian pertama
4. IsEmpty : memeriksa apakah antrian kosong
4. Struktur Antrian
Antrian juga mirip dengan tumpukan yang serupa dengan
list, hanya saja pop pada queue akan mengembalikan
elemen yang masuk setelah elemen terdepan yang di-pop
Peek Enqueue
Dequeue
5. Antrian Senarai
Karena memang memiliki dasar yang sama dengan list,
Antrian dapat digambarkan sebagai list linier dengan:
1. Kepala : elemen pertama
2. Ekor : elemen terakhir
3. Aturan penyisipan pada elemen terakhir, dan
penghapusan / pengambilan pada elemen pertama
Head Tail
7. Contoh ADT Array Queue Integer
type Queue: < integer capacity /* kapasitas queue*/
integer tail /* indeks queue */
integer infoTail /* nilai teratas pada queue */
integer Q[capacity] /* Q menampung elemen queue */ >
/* mengembalikan nilai terdepan dari queue */
function peek(Input Q: Queue) → integer
/* mengembalikan nilai pada queue*/
function infoTail(Input Q: Queue) → integer
/* memeriksa apakah queue kosong */
function isEmpty(Input Q: Queue) → boolean
/* menginisialisasi queue */
Procedure buatQueue(Output Q: Queue)
/* menambah nilai pada queue */
Procedure enqueue(Input/Output Q: Queue, X: in integer)
/* mengambil nilai dari queue */
Procedure dequeue(Input/Output S: Stack, Output X: integer)
8. Penjelasan TDA Antrian
Seperti tumpukan, antrian juga memiliki kapasitas yang
menyaktan jumlah elemen yang bisa diisi pada
penampung berbentuk larik, karena larik ini juga akan
didefinisikan dengan besar = kapasitas.
Tail merupakan indeks kosong terakhir antrian sehingga
kita tidak perlu lagi mencari indeks terakhir pada larik
penampung yang telah terisi jika ingin melakukan operasi.
Sedangkan infoTail yang diset juga untuk dapat langsung
mengembalikan nilai terdepan.
9. Contoh Kode C++ Array Queue Integer
#include <iostream>
using namespace std;
typedef struct queue {
int capacity; /* kapasitas antrian */
int tail; /* informasi indeks dari elemen kosong terakhir pada antrian */
int infoTail; /* informasi dari elemen informasi dari elemen terakhir pada antrian */
int Q[10]; /* tempat penyimpanan antrian dalam larik */
} Queue;
void buatQueue(Queue &Q) {
Q.capacity = 10; // inisialisasi kapasitas queue
Q.tail = 0;
for (int i=0; i<10 ; i++) {
Q.Q[i] = -9999;
} // misalkan nilai -9999 adalah penanda kosong
}
10. Contoh Kode C++ Array Queue Integer
bool isEmpty(Queue Q) {
return Q.tail == 0;
}
int Dequeue(Queue &Q) {
int num = Q.Q[0];
Q.tail -= 1;
int iterator = 0;
bool done = false;
while (!done) { // rapatkan antrian setelah pengambilan
Q.Q[iterator] = Q.Q[iterator+1];
iterator++;
if(Q.Q[iterator] == -9999) {
done = true;
}
}
return num;
}
11. Contoh Kode C++ Array Queue Integer
void Enqueue(Queue &Q, int x) {
if (Q.tail != 10) { // jika queue belum penuh
Q.Q[Q.tail] = x; // isi nilai head yang kosong dengan x
Q.head += 1; // naikan nilai head
}
}
int main() {
Queue myQueue;
buatQueue(myQueue);
Enqueue(myQueue, 10);
Enqueue(myQueue, 20);
for (int i=0; i<10; i++)
cout << myQueue.Q[i] <<" | ";
int hasil = Dequeue(myQueue);
cout << endl << "hasil: " << hasil << endl;
for (int i=0; i<10; i++)
cout << myQueue.Q[i] <<" | ";
return 0;
}
12. Pemanfaatan Queue
Aplikasi queue / antrian dapat digunakan contohnya pada
1. Program pemesanan (resrevasi hotel, tempat makan,
travel, dll)
2. Program penjadwalan (waktu eksekusi sub-program)
3. Program penyaringan / filter, misalkan pada jaringan
komputer untuk pembagian bandwidth
4. dll