QUEUE (ANTRIAN)
Sesi 5
Kegiatan Pembelajaran
Tujuan Pembelajaran
Materi
Tugas
2
Hal. 3
Hal. 4
Hal. 26
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
• Bersifat First In First Out (FIFO)
artinya : Elemen yang pertama masuk ke antrian
akan keluar pertama kalinya
Queue
Queue Linear Array
5
Queue Circular Array
jenis
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
7
Abstraksi Tipe Data Queue
8
Fungsi Create Queue
Create()
– Untuk menciptakan dan menginisialisasi Queue
– Dengan cara membuat Head dan Tail = -1
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
10
Fungsi Queue Kosong (2)
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
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
13
Ilustrasi Fungsi Enqueue
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
15
Ilustrasi Fungsi Dequeue
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
17
Ilustrasi Fungsi Clear
18
Fungsi Menampilkan Data Queue
• Tampil()
– Untuk menampilkan nilai-nilai elemen Antrian
– Menggunakan looping dari head s/d tail
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
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
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
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
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
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
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
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

Bab 4 queue (antrian)

  • 1.
  • 2.
  • 3.
    Tujuan Pembelajaran • Mahasiswamampu 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 FirstIn First Out (FIFO) artinya : Elemen yang pertama masuk ke antrian akan keluar pertama kalinya
  • 5.
  • 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
  • 7.
  • 8.
    8 Fungsi Create Queue Create() –Untuk menciptakan dan menginisialisasi Queue – Dengan cara membuat Head dan Tail = -1
  • 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
  • 10.
  • 11.
    11 Fungsi Queue Penuh FungisIsFull – 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 – Untukmenambahkan 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
  • 13.
  • 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
  • 15.
  • 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
  • 17.
  • 18.
    18 Fungsi Menampilkan DataQueue • 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 CircularArray 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 • Mendeklarasikanqueue kosong dengan memberi – nilai awal = 0 – nilai akhir = MAX - 1 void init(void) { antri.awal = 0; antri.akhir = MAX – 1; }
  • 22.
    22 Fungsi Full • Mengecekkondisi 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 • Mengecekkondisi 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-langkahInQueue – 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-langkahDeQueue – 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 AlgoritmaQueue 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