Senin, 18 Maret 2019

Materi Neww

QUEUE



1.    Pengertian Queue
       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 terlebih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya.
2.    Operasi Penting Queue
a.       Add yang berfungsi menambah sebuah elemen ke dalam antrian.
b.   Delete yang berfungsi menghapus atau mengeluarkan elemen dari  antrian.
3.    Operasi Dasar Queue
a.       Prosedur createEmpty
               Prosedur ini berfungsi untuk mengosongkaqueue dengan cara meletakkan HEAD dan TAIL pada indeks array ke-0.
Contoh:
void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}
b.      Prosedur Enqueue
Prosedur ini digunakan untuk memasukkan sebuah data/ nilai ke dalam queue. Sebelum sebuah data/ nilai dimasukkan ke dalam queue, maka prosedur ini terlebih dahulu melakukan pengecekan terhadap posisi HEAD dan TAIL. Jika posisi HEAD dan TAIL masih berada pada indeks ke-0 (artinya queue masih kosong), maka prosedur ini akan menempatkan HEAD dan TAIL pada indeks ke-1 terlebih dahulu, baru setelah itu memasukkan data/ nilai ke dalam array data queue. Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-0, maka posisi TAIL yang akan dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah yang berjalan seiring masuknya data baru ke dalam antrian, sedangkan HEAD akan tetap pada posisi ke-1.
Contoh :
void enqueue(int x)
{
if ((antrian.HEAD == 0) && (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
}

c.       Prosedur Dequeue
Prosedur ini digunakan untuk mengeluarkan atau membuang sebuah data/ nilai yang paling awal masuk (yang berada pada posisi HEAD, yakni yang paling depan dari antrian) ke dalam queue. Pekerjaan yang dilakukan oleh prosedur ini adalah menaikkan nilai HEAD satu level. Jadi, setiap satu kali data dikeluarkan, maka posisi HEAD naik bertambah satu level. Misalkan HEAD berada pada indeks ke-1, maka ketika akan mengeluarkan/ menghapus data pada posisi paling depan (pada posisi HEAD), prosedur ini akan menaikkan posisi HEAD ke indeks array ke-2.
Contoh:
void Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;
}.
   Posisi HEAD sudah melewati posisi TAIL (HEAD > TAIL), berarti sudah tidak ada lagi data/ nilai di dalam queue tersebut, maka saat itu terjadi, HEAD dan TAIL dikembalikan ke posisi ke-0.
d.      Fungsi IsEmpty
   Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue,  apakah queue tersebut kosong atau tidak. Jika queuetersebut kosong (artinya, HEAD dan TAIL berada pada posisi 0, atau bisa juga ketika HEAD > TAIL), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak kosong/ berisi (artinya, HEAD dan TAIL tidak berada pada posisi 0), maka fungsi akan mengembalikan nilai 0 (false).
Contoh:
int IsEmpty()
{
if ((antrian.HEAD> antrian.TAIL) || (antrian.HEAD == 0) &&
(antrian.TAIL == 0))
return 1;
else
return 0;
}
e.       Fungsi IsFull
Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah queuetersebut penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada posisi MAX), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika queuetersebut tidak penuh (artinya, TAIL tidak berada pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false).
Contoh :
Int IsFull()
{
if (antrian.TAIL == max)
return 1;
else
return 0;
}.


Tidak ada komentar:

Posting Komentar

Belajar Blog di Martikulasi MABA 2022

MARTIKULASI MABA 2022 Ini adalah pertama kali saya membuat blog, ini pengalaman yang sangat mengesankan untuk saya, karena saya bisa membu...