Kamis, 04 Juni 2015

PENGERTIAN QUEUE

Pengertian Queue

             Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front).

Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi,yaitu sisi blakang dan penghapusan data hanya melalui sisi depan. 

              Queue merupakan salah satu struiktur data yang memiliki sistemkerja FIFO (Fisrt In First Out). Dimana data yang pertama kali masuk maka data tersebut akan keluar lebih dulu.
Di dalam Queue mempunyai dua kata kunci yaitu Head dan Tail. Head adalah penanda urutan paling depan. Tail adalah penanda urutan paling belakang.


             Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
                 Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 
Karakteristik Queue atau antrian : 
1. elemen antrian 
2. front (elemen terdepan antrian) 
3. tail (elemen terakhir) 
4. jumlah elemen pada antrian 
5. status antrian Operasi pada Queue atau antrian




 1. Create Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail = -1 
 2. 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. 
 3. 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 
 4. 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 
 5. 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.
 6. 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 
 7. Tampil Untuk menampilkan nilai-nilai elemen Antrian Menggunakan looping dari head s/d tail 
 Contoh Program Queue

#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <iomanip.h>
#define max 6

typedef struct
{
 int head;
   int tail;
}antrian;

antrian ue;

typedef struct
{
   char *nm[max], *almt[max], *tgl[max];
} variabel;

variabel qu;


void creat()
{
 ue.head=ue.tail=-1;
}

empty()
{
 if(ue.tail==-1)
      return 1;
   else
      return 0;
}

full()
{
 if(ue.tail==max-1)
      return 1;
   else
      return 0;
}

void en(char *a, char *b, char *c)
{
 if(empty()==1)
   {
      ue.head=ue.tail=0;
      qu.nm[ue.tail]=a;
      qu.almt[ue.tail]=b;
      qu.tgl[ue.tail]=c;
   }

   else if(full()==0)
   {
    ue.tail++;
      qu.nm[ue.tail]=a;
      qu.almt[ue.tail]=b;
      qu.tgl[ue.tail]=c;
   }

   else if(full()==1)
   {
    cout<<"QUEUE PENUH";
   }
}

de()
{
 if(empty()==0)
 {
  int i;
      char *aa=qu.nm[ue.tail];
      char *bb=qu.almt[ue.tail];
      char *cc=qu.tgl[ue.tail];

       for(i=ue.head; 1<=ue.tail-1; i++)
    {
       qu.nm[i]=qu.nm[i+1];
         qu.almt[i]=qu.almt[i+1];
     qu.tgl[i]=qu.tgl[i+1];
   }

    ue.tail--;
      cout<<"DATA YANG DIHAPUS ADALAH : \n";

      cout<<"NAMA   : "<<aa<<endl;
      cout<<"ALAMAT : "<<bb<<endl;
      cout<<"TANGGAL: "<<cc<<endl;
   }


   else if(empty()==1)
   { cout<<"DATA EROR......QUEUE KOSONG"; }

   return 1;
}

void clear()
{
   ue.head=ue.tail=-1;
   cout<<"QUEUE CLEAR";
}

void view()
{
 if(empty()==0)
   {
  cout<<"NO NAMA       ALAMAT            TANGGAL\n";

   for(int i=ue.head; i<=ue.tail; i++)
   {
     cout<<setiosflags(ios::left)<<setw(3)<<i;
      cout<<setiosflags(ios::left)<<setw(11)<<qu.nm[i];
      cout<<setiosflags(ios::left)<<setw(18)<<qu.almt[i];
      cout<<setiosflags(ios::left)<<setw(9)<<qu.tgl[i]<<endl;
   }
   }
   else
   { cout<<"NO NAMA       ALAMAT            TANGGAL\n"; }
}

main()
{

 int menu;
   char nm[20], almt[40], tgl[20];

creat();

do{

clrscr();

cout<<"===========================\n";
cout<<"   CONTOH MENU PROGRAM QUEUE\n";
cout<<"===========================\n";
cout<<"1.ENQUEUE\n";
cout<<"2.DEQUEUE\n";
cout<<"3.CLEAR\n";
cout<<"4.VIEW\n";
cout<<"5.EXIT\n";
cout<<"===========================\n";
cout<<"PILIH MENU : ";       cin>>menu;

if(menu==1)
{     cout<<"MASUKAN NAMA ANDA   : ";   gets(nm);
     cout<<"MASUKAN ALAMAT ANDA : ";   gets(almt);
         cout<<"MASUKAN TANGGAL ANDA : ";      gets(tgl);
     en(nm, almt, tgl);
}

else if(menu==2)
{
   de();
}

else if(menu==3)
{
    clear();
}

else if(menu==4)
{
    view();
}

else if(menu==5)
{
    cout<<"exiiitttt......";
}
getch();

}while(menu!=5);

}




Semoga artikel ini bisa bermanfaat ....


Sumber Refrensi : 

10 Langkah Belajar  logika dan algoritma, menggunakan bahasa c dan c++


Tidak ada komentar:

Posting Komentar