Queue dengan array

Download Report

Transcript Queue dengan array

Queue
Operasi pada Queue
1.
2.
3.
4.
5.
6.
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 :
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 (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 :
1. Penambahan element baru pada bagian
belakang queue.
2. 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:
a. Setiap simpul memiliki 2 field, yaitu: INF
(informasi)danPRN (nomor prioritas)
b. 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
INFO
PRN
1
AAA
2
2
BBB
4
3
CCC
4
4
DDD
1
5
EEE
2
6
FFF
5
7
GGG
4
8
HHH
2
Urutan kedatangan
STAR
T
4
9
10
11
12
PRIORITY QUEUE with One-Way
List
START
DDD
1
HHH
AAA
2
2
BBB
EEE
2
4
CCC
GGG
4
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.