3. Tujuan Pembelajaran
• Mahasiswa mampu menjelaskan pengertian
queue
• Mahasiswa mampu menjelaskan dan
menunjukkan cara pembuatan queue,
operasi push dan pop pada array
• Mahasiswa mampu menjelaskan dan
menunjukkan program queue dengan array
•
3
4. 4
• Bersifat First In First Out (FIFO)
artinya : Elemen yang pertama masuk ke antrian
akan keluar pertama kalinya
6. 6
Queue Linier Array
• Terdapat satu buah pintu masuk di suatu ujung dan
satu buah pintu keluar di ujung satunya
• Sehingga membutuhkan 2 variabel: Head dan Tail
9. 9
Fungsi Queue Kosong
• IsEmpty()
– Untuk memeriksa apakah Antrian sudah penuh atau
belum
– Dengan cara memeriksa nilai Tail, jika Tail = -1 maka
empty
– Kita tidak memeriksa Head, karena Head adalah tanda
untuk kepala antrian (elemen pertama dalam antrian)
yang tidak akan berubah-ubah
– Pergerakan pada Antrian terjadi dengan penambahan
elemen Antrian kebelakang, yaitu menggunakan nilai
Tail
11. 11
Fungsi Queue Penuh
Fungis IsFull
– Untuk mengecek apakah Antrian sudah penuh atau belum
– Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena
MAX-1 adalah batas elemen array pada C) berarti sudah penuh
12. 12
Fungsi Enqueue
Enqueue
– Untuk menambahkan elemen ke dalam Antrian,
penambahan elemen selalu ditambahkan di
elemen paling belakang
– Penambahan elemen selalu menggerakan
variabel Tail dengan cara increment counter
Tail terlebih dahulu
14. 14
Fungsi Dequeue
• Dequeue()
– Digunakan untuk menghapus elemen
terdepan/pertama (head) dari Antrian
– Dengan cara menggeser semua elemen antrian
kedepan dan mengurangi Tail dgn 1
– Penggeseran dilakukan dengan menggunakan
looping
16. 16
Fungsi Clear
• Clear()
– Untuk menghapus elemen-elemen Antrian
dengan cara membuat Tail dan Head = -1
– Penghapusan elemen-elemen Antrian
sebenarnya tidak menghapus arraynya, namun
hanya mengeset indeks pengaksesan-nya ke
nilai -1 sehingga elemen-elemen Antrian tidak
lagi terbaca
18. 18
Fungsi Menampilkan Data Queue
• Tampil()
– Untuk menampilkan nilai-nilai elemen Antrian
– Menggunakan looping dari head s/d tail
19. 19
Queue Circular Array
• Circular array
merupakan array yang
dapat diakses mulai
dari sembarang indeks
(indeks awal) ke arah
indeks terakhir
(maksimum array),
kemudian memutar
hingga kembali ke
indeks awal
20. 20
Ilustrasi Queue Circular Array
Queue kosong
A, B, C, D dimasukkan ke
Queue
A, B dihapus dari Queue
E, F dimasukkan ke Queue
C, D dihapus dari Queue
21. 21
Fungsi Inisialisasi
• Mendeklarasikan queue kosong dengan
memberi
– nilai awal = 0
– nilai akhir = MAX - 1
void init(void)
{
antri.awal = 0;
antri.akhir = MAX – 1;
}
22. 22
Fungsi Full
• Mengecek kondisi queue dalam keadaan
penuh. Queue dikatakan penuh bila tempat
yang masih kosong tinggal satu
int isFull(void)
{
if(((antri.akhir+2)%MAX) == antri.awal)
return (true);
else
return(false);
}
23. 23
Fungsi Empty
• Mengecek kondisi queue dalam keadaan
kosong, apabila posisi akhir dan awal masih
bersebelahan dan posisi akhir lebih besar
dari posisi awal, maka queue dalam keadaan
kosong
int isEmpty(void)
{
if(((antri.akhir+1)%MAX) == antri.awal)
return (true);
else
return(false);
}
24. 24
Fungsi InQueue
• Langkah-langkah InQueue
– Geser posisi belakang
– Masukkan elemen baru
– Depan tidak berubah, belakang berubah
void InQueue(char elemen)
{
if(isFull() != true)
{
antri.akhir = (antri.akhir+1)%MAX;
antri.info[antri.akhir] = elemen;
}
else
printf(“Queue overflown”);
}
25. 25
Fungsi DeQueue
• Langkah-langkah DeQueue
– Ambil elemen paling depan
– Geser posisi depan
– Belakang tetap, depan berubah
char DeQueue(void)
{
char isi;
int I;
if(isEmpty() != true)
{
isi = antri.info[antri.awal];
antri.awal = (antri.awal+1)%MAX;
return(isi);
}
else
printf(“Queue underflown”);
}
26. 26
Tugas
Buatlah Program Algoritma Queue dengan
1. Menambahkan fungsi untuk mencari suatu
elemen dalam queue
2. Menambahkan fungsi untuk mengedit suatu
elemen dalam queue
3. Mencari nilai total, rata-rata, terbesar dan
terkecil dari elemen-elemen queue dalam
fungsi tersendiri