Thursday, March 21, 2019

Algoritma Pemrograman : Queue



Queue 


Kaidah utama dalam konsep queue adalah FIFO yang merupakan singkatan dari First In First Out, artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan antrian di sebuah loket pembelian tiket kereta, orang yang datang lebih dahulu, maka akan dilayani terlbih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya. Gambar di bawah ini mengilustrasikan kerja sebuah queue:

Pendefinisian Struktur

Sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe bentukan baru, di dalam Bahasa C++, biasa disebut struct. Sebuah struktur data dari sebuah queue setidaknya harus mengandung dua tiga variabel, yakni variabel HEAD yang akan berguna sebagai penanda bagian depan antrian, variabel TAIL yang akan berguna sebagai penanda bagian belakang antrian dan ARRAY DATA dari yang akan menyimpan data-data yang dimasukkan ke dalam queue tersebut. Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah queue menggunakan Bahasa C++ :


typedef struct
{
      int data[MAX];       int head;       int tail;
   }Queue;

                 
Penjelasan :
Bagian program diatas merupakan pendefinisian struct bernama queue. Didalam struct tersebut terdapat variabel data[MAX] sebagai array, variabel head dan variabel tail. Ketiga variabel tersebut bertipe data integer.

a. Fungsi Create ()

Fungsi Create() berfungsi untuk mengosongkan queue. Berikut syntax untuk fungsi Create():
void Create()
{
antrian.head=antrian.tail=-1;
}
Penjelasan :
Bagian program diatas merupakan fungsi Create(), yang berfungsi untuk mengosongkan queue    dengan                 cara       meletakan antrian.head     dan antrian.tail di posisi  awal yaitu -1.

b. Fungsi IsEmpty ()

Fungsi IsEmpty() berfungsi untuk mengecek apakah queue dalam keadaan kosong atau tidak. Berikut syntax untuk fungsi IsEmpty() :
int IsEmpty()
{
if(antrian.tail==-1) return 1; else
return 0;
}
Penjelasan :
Pada fungsi IsEmpty() terdapat sebuah logika, yaitu :
1.       Jika antrian.tail berada pada posisi -1, maka return 1 dijalankan, yang berarti antrian dalam kondisi kosong.
2.       Jika tidak, maka yang akan dijalankan adalah return 0, yang berarti didalam queue terdapat data didalamnya.
      c.     Fungsi IsFull ()
Fungsi IsFull() berfungsi untuk mengecek apakah queue dalam keadaan penuh atau tidak. Berikut syntax untuk fungsi IsFull() :
int IsFull() {
if(antrian.tail==MAX-1) return 1; else
return 0;
}
Penjelasan :
Pada fungsi IsFull() terdapat sebuah logika yaitu :
1.       Jika antrian.tail berada pada posisi MAX-1, maka return 1 dijalankan yang berarti antrian dalam kondisi penuh.
2.       Jika tidak maka return  0 yang dijalankan, yang berarti antrian masih bisa diisi data.
d. Fungsi Enqueue(int data)
Fungsi Enqueue(int data) berfungsi untuk memasukkan data kedalam queue, berikut syntax untuk fungsi Enqueue(int data) :
void Enqueue(int data)
{
if(IsEmpty()==1)
{
antrian.head=antrian.tail=0; antrian.data[antrian.tail]=data; printf("%d
sudah
dimasukan",antrian.data[antrian.tail]);
} 
else if(IsFull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data; printf("%d
dimasukan",antrian.data[antrian.tail]); }
}
sudah
Penjelasan :
Pada fungsi Enqueue(int data), sebelum memasukkan nilai maka dilakukan pengecekkan terhadap fungsi IsEmpty(int data) dan fungsi IsFull(). Terdapat 2 logika didalam fungsi Enqueue() yaitu :
1.       Jika fungsi IsEmpty bernilai benar (1) berarti antrian dalam kondisi kosong,
maka antrian.head dan antrian.tail dinaikkan satu tingkat, berarti posisi head dan tail sekarang berada pada posisi 0, baru kemudian data disimpan kedalam variabel data. Lalu menampilkan pemberitahuan bahwa data sudah berhasil disimpan.
2.       Jika fungsi IsFull() bernilai salah (0) berarti antrian belum penuh,  maka antrian.tail dinaikkan posisinya satu tingkat baru kemudian data yang diterima dari fungsi main akan disimpan kedalam variabel data. Lalu menampilkan pemberitahuan bahwa data sudah berhasil disimpan.

Baca juga : Aplikasi sederhana perentalan CD di toko

e. Fungsi Dequeue()

Fungsi Dequeue() berfungsi untuk  mengeluarkan data yang paling awal masuk atau yang berada pada posisi head. Berikut syntax untuk fungsi Dequeue :
int Dequeue()
{ int i;
int e = antrian.data[antrian.head]; for(i=antrian.head;       i<=antrian.tail1;i++) {
antrian.data[i]=antrian.data[i+1];
}
antrian.tail--;
return e;
}
Penjelasan :
Fungsi Dequeue() berfungsi untuk mengeluarkan atau menghapus data yang pertama dimasukkan. Variabel i dideklrarasikan sebagai antrian.head, e dideklarasikan sebagai array antrian.data[antrian.head];. Maka kemudian perulangan, for(i=antrian.head; i<=antrian.tail-1;i++).  Maksudnya ketika antrian.head lebih kecil sama dengan antrian.tail-1, maka i++ yang berarti posisi antrian.head dinaikkan satu tingkat. Kemudian antrian data yang berada pada head dinaikkan indeks arraynya satu tingkat. Lalu posisi antrian.tail diturunkan satu tingkat. Kemudian menjalankan e, yang berarti mengembalikan posisi antrian.head ke indeks nya semula. 

f. Fungsi clear()

Fungsi clear() berfungsi untuk membersihkan antrian. Syntax nya adalah sebagai berikut :
void Clear()
{
antrian.head=antrian.tail=-1; printf("CLEAR");
}
Penjelasan :
Fungsi Clear() berfungsi mengosongkan antrian dengan mengembalikan posisi head dan tailnya keposisi -1, setelah itu akan muncul “CLEAR” berarti antrian telah dikosongkan.

g. Fungsi Tampil()

Fungsi Tampil() berfungsi untuk menampilkan isi antrian. Syntax nya adalah sebagai berikut:
void Tampil()
{
if(IsEmpty()==0)
{ for(int
i=antrian.head;i<=antrian.tail;i++)
{
printf("%d",antrian.data[i]);
}
}else printf("data kosong!\n"); }
Penjelasan :
Sebelum menampilkan isi antrian fungsi Tampil() akan melakukan pengecekkan ke fungsi IsEmpty(). 
Dalam fungsi Tampil() terdapat dua logika yaitu :
1.       Jika fungsi IsEmpty() bernilai salah (0) berarti antrian berisi data. Baru kemudian perulangan yang berfungsi untuk menampilkan data dijalankan.  
2.       Selain itu, berarti antrian tidak berisi data, maka akan tampil “data kosong!”. 

Untuk contoh program bisa di unduh dengan cara klik caption di bawah ini :

No comments:

Post a Comment

Algoritma Pemrograman : Graph dan Pohon

Graph Graf adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan sekumpulan garis (sisi). Graph dapa...