Anda di halaman 1dari 23

Queue (Antrian)

• Contoh antrian :
 Antrian printer

 Antrian tiket bioskop


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.
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).

enqueue Queue dequeue


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.

Enqueue Queue Dequeue


Rear Front
• Queue berguna untuk menyimpan
pekerjaan yang tertunda.
Gambaran Proses Queue
(Antrian)
Operasi pada Queue
1. Deklarasi
2. Inisialisasi
3. Cek kosong
4. Cek penuh
5. Penambahan
6. Pengambilan
7. Pengaksesan
(1) Deklarasi
 Proses yang harus dilakukan pertama kali
adalah deklarasi/menyiapkan tempat.
 Langkah yang harus dilakukan adalah :
 Deklarasi class
 Deklarasi struktur data (menggunakan array atau
linked list)
 Deklarasi pointer front dan rear
 Deklarasi variabel size untuk menyimpan besar array.
 Deklarasi variabel jumlah untuk mengetahui banyak
item yang disimpan pada queue.
Deklarasi
1.
Queue
Pembuatan struct Tnode dengan

Linked-list
struct TNode{
int data;
TNode *next;
};
2. Pembuatan struct Queue
contoh :
struct Queue{
int count;
TNode *front;
TNode *rear;
};
3. Pembuatan variabel head, tail, front dan rear bertipe TNode.
TNode head,tail,front, rear;
(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;
}
(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.
Program “isEmpty” Queue
(Linked List)
bool isEmpty(){
return (rear==NULL);
}
(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.
(5) Operasi
POP...........(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
Program Dequeue (Linked
List)
int dequeue(){
if(!isEmpty()){
int tampungData=front->data;
removeFirst();
front=head;
return tampungData;
}else{
cout<<"queue kosong";
return -1;
}
}
Program removeFirst
void removeFirst(){
TNode *hapus;
if (isEmpty()==0){
if(head!=tail){
hapus = head;
head = head->next;
delete hapus;
} else {
head=tail=NULL;
}
cout<<"terhapus\n";
} else cout<<"Masih kosong\n";
}
(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.
(6) Operasi
Enqueue...........(lanjutan)
 Langkah-langkah :
1. Penambahan element baru pada bagian belakang queue.
2. Perubahan posisi rear.
Program Enqueue (Linked
List) void enqueue(int baru){
addLast(baru);
rear=tail;
front=head;
}
Program addLast
void addLast(int databaru){

TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()){
head=baru;
tail=baru;
tail->next = NULL;
}
else {
tail->next = baru;
tail=baru;
}
cout<<"Data masuk\n";
}
(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).
Program Peek (Linked List)
int peekQueue(){
return front->data;
}
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

Anda mungkin juga menyukai