Queue
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 proses pengambilan element pada queue. 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). Queue enqueue 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. Queue Enqueue Rear Dequeue Front
Queue berguna untuk menyimpan pekerjaan yang tertunda.
Gambaran Proses Queue (Antrian)
Operasi pada Queue Deklarasi Inisialisasi Cek kosong Cek penuh Penambahan Pengambilan Pengaksesan
(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
Deklarasi Queue dengan Linked-list Pembuatan struct Tnode struct TNode{ int data; TNode *next; }; 2. 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 DEQUEUE...........(lanjutan) Langkah-langkah : Pengecekan queue dalam kondisi kosong dengan memanggil method isEmpty(). Data dari element yang diambil akan menjadi return value (nilai yang dikembalikan) 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 : Penambahan element baru pada bagian belakang queue. 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; 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