3. Pengertian
• Queue (antrian) adalah struktur data
dimana proses pengambilan dan
penambahan element dilakukan pada
ujung yang berbeda.
• Queue mengikuti konsep FIFO.
• FIFO (First In First Out) : elemen yang
pertama masuk akan menjadi elemen
yang pertama kali keluar.
4. Enqueue dan Dequeue
1. Enqueue
proses penambahan element pada queue.
2. Dequeue
proses pengambilan element pada queue.
Penambahan dilakukan pada bagian belakang.
Sedangkan pengambilan dilakukan pada bagian depan
(element yang pertama masuk).
Queueenqueue dequeue
5. Front dan Rear
• Front : pointer bantu yang digunakan
untuk menunjuk element yang paling
depan.
• Rear : pointer bantu yang digunakan
untuk menunjuk element yang paling
belakang.
QueueEnqueue
Rear
Dequeue
Front
8. Operasi pada Queue
1. Deklarasi
2. Inisialisasi
3. Cek kosong
4. Cek penuh
5. Penambahan
6. Pengambilan
7. Pengaksesan
9. (1) Deklarasi
• Proses yang harus dilakukan pertama kali
adalah deklarasi/menyiapkan tempat.
• Langkah yang harus dilakukan adalah :
– Deklarasi struct
– Deklarasi struktur data (menggunakan array atau
linked list)
– Deklarasi pointer front dan rear
10. Deklarasi Queue dengan Linked-list
1. Pembuatan struct Tnode
struct TNode{
int data;
TNode *next;
};
2. Pembuatan variabel head, tail, front dan rear
bertipe TNode.
TNode head,tail,front, rear;
11. (2) Inisialisasi
• Pada Linked List:
Proses inisialisasi dilakukan dengan
memberikan nilai awal pada variabel
head, tail front dan rear dengan nilai null.
void inisialisasi(){
head=tail=front=rear=NULL;
}
12. (3) Cek Kosong
• Operasi yang digunakan untuk mengecek
kondisi queue dalam keadaan kosong.
• Pada linked list : dapat menggunakan
pengecekan front atau rear jika nilainya null
berarti queue kosong.
• Operasi ini harus dapat mengembalikan nilai
true jika queue kosong dan false jika
sebaliknya.
14. (6) Operasi Dequeue
• Dequeue adalah proses pengambilan data
pada queue.
• Ketika dequeue terjadi, element pada queue
akan berkurang, yaitu element yang pertama
kali ditambahkan.
• Pada linked list : front akan menunjuk pada
node yang ditunjuk oleh head setelah
operasi remove.
15. (5) Operasi DEQUEUE...........
(lanjutan)
• Langkah-langkah :
1. Pengecekan queue dalam kondisi kosong
dengan memanggil method isEmpty().
2. Data dari element yang diambil akan
menjadi return value (nilai yang
dikembalikan)
3. Perubahan nilai pada variabel front dan rear
16. Program Dequeue (Linked List)
int dequeue(){
if(!isEmpty()){
int tampungData=front->data;
removeFirst();
front=head;
return tampungData;
}else{
cout<<"queue kosong";
return -1;
}
}
17. Program removeFirst
void removeFirst(){
TNode *hapus;
if (isEmpty()==0){
if(head!=tail){
hapus = head;
head = head->next;
delete hapus;
} else {
head=tail=NULL;
}
cout<<"terhapusn";
} else cout<<"Masih kosongn";
}
18. (6) Operasi Enqueue
• Enqueue adalah proses penambahan
element pada queue.
• Ketika enqueue terjadi, element pada queue
akan bertambah 1.
• Posisi pointer rear akan bergeser menunjuk
pada element baru yang ditambahkan.
– Pada linked list : rear akan menunjuk ke node
baru yang ditunjuk oleh tail.
22. (7) Operasi peek
• Peek pada queue adalah proses
pengaksesan element yang ditunjuk oleh
front (yaitu element yang pertama kali
ditambahkan).
• Operasi ini berbeda dengan enqueue
karena tidak disertai dengan
penghapusan data yang ada hanya
pengaksesan (pengembalian data saja).
24. Contoh Penerapan Queue
• mailbox dalam komunikasi antar
proses
• simulasi dan modeling (misalnya
simulasi sistem pengendali lalu lintas
udara) dalam memprediksi performansi
• Waiting Line pada Sistem Operasi