QUEUE
Queue adalah suatu bentuk khusus dari linier list dengan operasi pemasukan data hanya diperbolehkan pada salah satu sisi saja dimana pengisian dan pengambilan datanya dirancang berdasarkan algorithma FIFO (First in First out) atau FCFS (First Come First Serve).
Operasi pengisian hanya boleh dilakukan pada sisi belakang (Rear) / ekor (Tail); dan
Operasi penghapusan hanya diperbolehkan pada sisi depan (Front) / kepala (Head).
Queue adalah sebuah struktur data yang aksesnya bersifat sekuensial (berurutan).
Queue umumnya dianalogikan seperti sebuah antrian pada loket pembelian tiket.
Struktur / Bagian Queue:
A. Fungsi Create ()
bool IsFull () {
If (q.rear == MAX - 1)
return true;
else
return false;
}
D. Fungsi Insert () / Enqueue ()
Operasi pengisian hanya boleh dilakukan pada sisi belakang (Rear) / ekor (Tail); dan
Operasi penghapusan hanya diperbolehkan pada sisi depan (Front) / kepala (Head).
Queue adalah sebuah struktur data yang aksesnya bersifat sekuensial (berurutan).
Queue umumnya dianalogikan seperti sebuah antrian pada loket pembelian tiket.
Struktur / Bagian Queue:
- FRONT / HEAD
- Merupakan index elemen paling depan dari queue.
- FRONT / HEAD dapat bertipe data integer dengan nilai -1 jika queue kosong atau bernilai ≥ 0 jika queue memiliki isi.
- Jika queue Q = [Q0, Q1 , Q2 , Q3 , Q4 , ..., QT-1], maka FRONT / HEAD = 0
- REAR / TAIL
- Merupakan index elemen paling belakang dari queue.
- REAR / TAIL dapat bertipe data integer dengan nilai -1 jika queue kosong atau bernilai ≥ 0 jika queue memiliki isi.
- Jika queue Q = [Q0, Q1, Q2, Q3, Q4, ..., QT-1], maka REAR / TAIL = T-1
- NOEL
- Merupakan jumlah elemen yang tersimpan di dalam queue.
- NOEL merupakan integer dengan nilai ≥ 0.
- Jika NOEL = 0, maka queue tersebut dianggap kosong.
- Jika queue Q = [Q0, Q1, Q2, Q3, Q4, ..., QT-1], maka NOEL = T.
- Jika terdapat NOEL elemen di dalam queue, maka elemen ke NOEL-1 merupakan REAR atau Q [NOEL - 1] = REAR.
- Create ()
- isEmpty ()
- IsFull ()
- Insert () / Enqueue ()
- Remove () / Dequeue ()
- Clear ()
- Digunakan untuk menghapus seluruh elemen dari queue.
A. Fungsi Create ()
B. Fungsi IsEmpty ()
Digunakan untuk menguji apakah queue kosong atau tidak kosong.
- Proses ketika fungsi dijalankan:
- Menguji kosong, yakni melihat apakah antrian tidak memiliki data atau memiliki data.
bool IsEmpty() {
if (rear == -1)
return true;
else
return false;
}
C. Fungsi IsFull ()
Digunakan untuk menguji apakah queue penuh atau tidak penuh.
bool IsFull () {
If (q.rear == MAX - 1)
return true;
else
return false;
}
D. Fungsi Insert () / Enqueue ()
Digunakan untuk melakukan pengisian data ke dalam queue pada REAR / TAIL.
Penambahan elemen selalu menggerakan variabel REAR dengan cara menambahkan REAR terlebih dahulu.
- Proses ketika fungsi dijalankan:
- Menguji overflow, yakni melihat apakah antrian sudah penuh atau belum dengan Fungsi IsFull (). Proses hanya dilanjutkan jika IsFull () bukan bernilai TRUE.
- Mengubah FRONT menjadi 0 jika keadaan IsEmpty () bernilai TRUE, atau tidak berubah jika IsEmpty () bernilai FALSE.
- Menambah NOEL dengan 1.
- Menambah REAR dengan 1.
- Mengisi Elemen REAR dengan nilai pada parameter Data.
Void Enqueue (int data) {
If (!IsFull ()) {
If (IsEmpty ()) {
q.front = q.rear = 0;
q.data [q.rear] = data;
}
else {
q.rear ++;
q.data [q.rear] = data;
}
}
return false;
}
E. Fungsi Remove () / Dequeue ()
Digunakan untuk mengeluarkan data yang tersimpan pada FRONT / HEAD pada queue.
Pengurangan elemen selalu menggerakan variabel REAR dengan cara mengurangi REAR dengan 1.
- Proses ketika fungsi dijalankan:
- Menguji apakah queue kosong atau tidak kosong dengan IsEmpty (). Proses hanya dilanjutkan jika IsEmpty() bukan bernilai TRUE.
- Menggeser isi seluruh elemen setelah FRONT ke arah FRONT. Sehingga elemen setelah FRONT menjadi FRONT dan seterusnya, sampai dengan elemen terakhir (REAR).
- Mengubah FRONT menjadi -1 jika REAR bernilai 0.
- Mengurangi NOEL dengan 1.
- Mengurangi REAR dengan 1.
Void Dequeue () {
if (!IsEmpty ()) {
int I;
Int e = q.data [q.front];
for (i = q.front; I <= q.rear = 1; i++) {
q.data [i] = q.data[i+1];
}
q.rear --;
return e;
}
Return false;
}
Komentar
Posting Komentar