Langsung ke konten utama

QUEUE/ANTRIAN PADA PEMROGRAMAN C++

                                                              QUEUE/ANTRIAN 

penjelasan queue/ antrian

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 datatersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan antrian di sebuah loket pembelian tiket kereta, orang yang lebih dahulu, maka akan dilayani terlebih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya. Gambar dibawah ini mengilustrasikan kerja sebuah queue.
        
 
 operasi- operasi sebagai berikut 
 1. enqueue memasukan data ke dalam antrian
 2. dequeue mengeluarkan data terdepan dari antrian
 3. clear menghapus seluruh antrian 
 4. isempty memeriksa apakah antrian kosong
 5. isfull memeriksa apakah antrian penuh

 Deklarasi queue dalam program
        sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe bentukan baru, didalam bahasa C, biasa disebut struct, sebuah struktur data dari sebuah queue setidaknya harus mengandung dua tiga variabel, vareabel 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 queque tersebut. Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah queue menggunakan bahasa C++.
 
 typed struct
{
int HEAD,TAIL;
int data [max+1];
}Queque;
 Didalam, nilai MAX didefinisikan sebagai jumlah tumpukan maksimum yang dapat disimpan dalam queue. setelah struktur data dari queue didefinisikan dengan syntax di atas, maka setelah itu  dapat dibuat variabel-variabel baru yang mengacu pada tipe data queue di atas, misalkan membuat sebuah variabel bernama antrian yang bertipe queue.
Queue antrian 
Dalam paper ini, sebuah queue didefinisikan dengan array berukuran MAX + 1, maksudnya adalah agar elemen array ke-0 tidak digunakan untuk menyimpan data, melainkan hanya sebagai tempat singgag sementara untuk variabel HEAD dan TAIL. sehingga, jika HEAD dan TAIL berada pada elemen array ke-0, berarti queue tersebut dalam kondisi kosong (tidak ada data yang disimpan). Berikut adalah ilustrasi dari sebuah queue kosong dengan ukuran nilai MAX = 6 ;
 operasi- operasi dasar dalam queue
  pada dasarnya, operasi-operasi dasar pada queue mirip dengan operasi-operasi pada stack. perbedaannya hanya pada prosedur push dan pop saja. pada queue, prosedur yang berfungsi untuk memasukkan data atau nilai ke dalam antrian adalah enqueue, sedangkan prosedur untuk mengeluarkan data atau nilai atau nilai dari antrian adalah dequeue.

a. Prosedur createEmpty
     sama pada strack, prosedur ini berfungsi untuk mengosongkan queue dengan cara meletakkan HEAD dan TAIL pada indeks array ke-0. Berikut deklarasi prosedur crateEmpty pada queue dalam bahasa C++.
void createEmpty()
{
  antrian.HEAD = 0;
  antrian .TAIL  =0;
}
b. prosedur enqueue
     prosedur ini digunakan untuk memasukkan sebuah data atau 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. Berikut deklarasi prosedur enqueue dalam Bahasa C:
 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; 
}
Pada deklarasi prosedur enqueue di atas, prosedur memiliki sebuah parameter formal yang bernama „x‟ yang bertipe integer. Parameter formal „x‟ ini berguna untuk menerima kiriman nilai dari program utama (void main()) yakni berupa sebuah bilangan integer yang akan dimasukkan ke dalam queue. Gambar di bawah ini mengilustrasikan proses enqueue ke dalam sebuah queue yang masih kosong.
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. Berikut deklarasi prosedur pop dalam Bahasa C:

void Dequeue(){  
  if (q.head > q.tail)    {       
  q.head = 0;       
  q.tail = 0;  
   }   
  q.head = q.head + 1;
    }
Ketika 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 
Sama seperti fungsinya pada stack, fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah queue tersebut kosong atau tidak. Jika queue tersebut 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). Berikut deklarasi fungsi IsEmpty dalam Bahasa C:
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 queue tersebut penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada posisi MAX), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak penuh  (artinya, TAIL tidak berada pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false). Berikut deklarasi fungsi IsFull dalam Bahasa C:
int IsFull()
 { 
     if (antrian.TAIL == max)      
                 return 1; 
     else       
    return 0;  
  }

 4. Contoh program implementasi queue Berikut adalah contoh kode program dalam Bahasa C yang mengimplementasikan konsep queue. Pada program ini, user akan menginputkan data satu per satu, kemudian setelah selesai menginputkan data ke dalam queue, maka program akan menampilkan semua isi queue. 
Programnya 


       

    
  Hasil running

DAFTAR PUSAKA 
http://eprints.unsri.ac.id/2916/1/modul%20strukdat.pdf




Komentar

Postingan populer dari blog ini

ALGORITMA DAN PEMOGRAMAN2

SEARCING 1.       Linked List   Secara umum search dapat diartikan mencari data dengan cara menelusuri tempat penyimpanan data tersebut. Tempat penyimpanan data dalam memory dapat berupa array atau dapat juga dalam bentuk Linked List. Pencarian dapat dilakukan terhadap data yang secara keseluruhan berada dalam memory komputer ataupun terhadap data yang berada dalam penyimpanan eksternal (hard disk). 2.       Pengertian Searching Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memory komputer, dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada dalam internet. Terdapat beberapa metode yang dapat digunakan untuk searching , ada yang dinamakan: ·   Sequential Search ·   Binary Search 3.       Sequential Search Sequential Search merupakan metode pencarian data dalam array dengan cara membandingkan data yang dicari den

STRUCT ARRAY PADA PEMROGRAMAN C++

                                                            STRUCT ARRAY Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga dengan tipe data yang dibuat dengan perintah struct. Contoh program di bawah ini dapat menjelaskan cara penggunaan array yang bertipe data buatan. Berikut contoh Program Sederhana ‘array di dalam struct’. Disini saya menggunakan tools Borland C++ . Script : /*contoh program sederhana ‘array di dalam struct’*/ #include “stdio.h” #include “conio.h” #include “string.h” #define maks 3 struct TMhs { char NIM[9]; char Nama[21]; int NilaiUTS,NilaiUAS,NilaiQuis; float NilaiAkhir; char index; }; main () { TMhs mhs[maks]; int i; for(i=0;i<maks;i++) { printf(“Pengisian Data Mahasiswa Ke-%i \n”, i+1); printf(“NIM : “);fflush(stdin);gets(mhs[i].NIM); printf(“NAMA : “);fflush(stdin);gets(mhs[i].Nama); printf(“Nilai Quiz : “);scanf(“%d”,&mhs[i].NilaiQuis); printf(“Nilai UTS : “);scanf(“%d”,