Queue
Operasi pada Queue Deklarasi dan inisialisasi Cek kosong Cek penuh Penambahan Pengambilan Pengaksesan
(1) Deklarasi dan inisialisasi Proses yang harus dilakukan pertama kali adalah deklarasi/menyiapkan tempat. Langkah yang harus dilakukan adalah : 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.
Program Deklarasi Queue (Array) int front=0; int rear=-1; int jumlah_item=0; int array_size=10; char antrian[10];
(3) Cek Kosong Operasi yang digunakan untuk mengecek kondisi queue dalam keadaan kosong. Pada array : menggunakan pengecekan pada variabel jumlah_item. Jika nilainya = 0 berarti queue dalam kondisi kosong. Operasi ini harus dapat mengembalikan nilai true jika queu kosong dan false jika sebaliknya.
Program “isEmpty” Queue (Array) bool isEmpty(){ return jumlah_item==0; }
(4) Cek Penuh Operasi yang hanya dapat diterapkan pada queue yang menggunakan array. Operasi ini digunakan untuk mengecek kondisi queue dalam keadaan penuh. Caranya : melihat nilai pada variabel jumlah item. Jika nilainya = size (dimana size adalah ukuran array) maka dapat diindikasikan queue dalam kondisi penuh. Operasi ini harus dapat mengembalikan nilai true jika queue penuh dan false jika sebaliknya.
Program “isFull” (Array) bool isFull(){ return (jumlah_item==array_size); }
(5) Operasi Dequeue Dequeue adalah proses pengambilan data pada queue. Ketika dequeue terjadi, element pada queue akan berkurang, yaitu element yang pertama kali ditambahkan. Pada Array : akan terjadi pergeseran data dari belakang ke depan. Rear berkurang 1.
(5) Operasi POP...........(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 (Array) int dequeue(){ if(!isEmpty()){ int temp=antrian[front]; for(int i=0;i<jumlah_item-1;i++) antrian[i]=antrian[i+1]; rear--; jumlah_item--; return temp; } else{ cout<<"queue kosong"; return rear;
(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 array : rear akan di-increment.
(6) Operasi Enqueue...........(lanjutan) Langkah-langkah : Penambahan element baru pada bagian belakang queue. Perubahan posisi rear. Khusus untuk array, terlebih dahulu harus dicek kondisi queue penuh dengan memanggil method isFull(). Jika nilai yang dikembalikan true maka bisa ditampilkan pesan kesalahan
Program Enqueue (Array) void enqueue(int data){ if(isFull()){ cout<<"queue penuh"; } jumlah_item++; antrian[++rear]=data;
(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 (Array) int peek(){ return antrian[front]; }
PRIORITY QUEUE dengan ONE-WAY LIST Representasi antrian berprioritas antara lain dilakukan dengan one-way list, sbb: Setiap simpul memiliki 2 field, yaitu: INF (informasi)danPRN (nomor prioritas) Simpul X mendahului simpul Y dalam list : - jika prioritas X lebih tinggi daripada prioritas Y - jika prioritas keduanya sama, tetapi X lebih dulu masuk ke dalam antrian.
PRIORITY QUEUE with One-Way List Urutan kedatangan INFO PRN 1 AAA 2 BBB 4 3 CCC DDD 5 EEE 6 FFF 7 GGG 8 HHH 9 10 11 12 START 4
PRIORITY QUEUE with One-Way List START DDD 1 AAA 2 EEE 2 HHH 2 BBB 4 CCC 4 GGG 4 FFF 5 X
Tugas Buatlah simulasi antrian teller di bank . Apabila bank mempunyai 2 teller yang bertugas melayani nasabah. Setiap ada nasabah baru masuk akan mengambil nomer antrian yang disesuaikan antrian paling pendek antara teller 1 atau teller 2. apabila jumlah antrian sama maka akan mengantri di teller 1.Kalau misalnya nasabah mempunyai priority card maka nasabah tersebut harus didahulukan.