Rabu, 08 Januari 2014

QUEUE (ANTRIAN)



Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan  (front). Oleh karena itu, queue bersifat FIFO (first in first out).




Operasi-operasi dasar dari sebuah qu  eue adalah :
1.   Enqueue : proses penambahan elemen di posisi belakang
2.   Dequeue : proses pengambilan elemen di posisi depan

Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan
terhadap sebuah queue yaitu :
1.   Operasi peme riksaan queue kosong (fungsi kosong)
2.   Operasi peme riksaan queue penuh (fungsi penuh).
3.   Operasi inisialisasi queue (fungsi inisialisasi)

Adapun presentasi queue dapat dilakukan dengan 2 cara yaitu :
1.   Dengan menggunakan array statis
      Operasi-operasi yang dapat dilakukan dalam queue yang menggunakan representasi array statis adalah :

       1.1.  Pendeklarasian sebuah queue
               Setiap queue memiliki elemen-elemen (field) berupa posisi depan, posisi
belakang, elemen antrian, dan maksimal elemennya.
Adapun pendeklarasian queue dalam  bahasa C adalah :


  • Operasi Enqueue
Proses enqueue adalah proses untuk penambahan di posisi belakang. Penam bahan ini dilakukan jika kondisi queue tidak penuh. Jika keadaan masih kosong, maka field depan dan belakang bernilai 1 tetapi jika sudah mempunyai elemen maka yang nilai belakang harus bertambah 1. Kemudian data baru disimpan di array pada posisi belakang. Implementasi dalam C harus melakukan penyesuaian karena elemen array C dimulai dari 0 sehingga ketika queue masih kosong pemberian nilai depan dan
belakang adalah 0 bukan 1. 

  • Operasi Dequeue
Operasi dequeue adalah proses pengambilan elemen queue. Tentunya elemen yang diambil selalu dari elemen pertama  (1). Setelah elemen pertama diambil,
ma ka akan diperlukan proses pergeseran  elemen data setelah elemen data yang
diambil (dari posisi ke-2 sampai posisi paling belakang), dan kemudian posisi 
belakang akan dikurangi 1 karena ada data yang diambil. 

Contoh Program Queue :

#include<iostream.h>
#include<conio.h>

main()
{
    int cek = 0, data [20],x,hapus;
    char pil;
    do {
            clrscr();
            cout<<"1. Tambah Antrian"<<endl;
            cout<<"2. Hapus Antrian"<<endl;
            cout<<"3. Lihat Antrian"<<endl;
            cout<<"4. Keluar"<<endl;

            cout<<"Silahkan Masukan Pilihan Anda=";
            pil=getche();
            cout<<endl;

    if(pil!='1'&&pil!='2'&&pil!='3'&&pil!='4')

            cout<<"Anda salah mengetikan inputan";
            else
            {
                if(pil=='1')  //enqueue
            {
                if(cek==20)
                cout<<"Antrian penuh"<<endl;
                else
            {
                cout<<"Masukan nilai="<<endl;
                cin>>x;
                data[cek]=x;
                cek++;
            }
            }
                else
            {
                if(pil=='2') //dequeue
            {
                if(cek==0)
                cout<<"Antrian kosong"<<endl;
                else
            {
                hapus=data[0];
                for(int v=0;v<cek;v++)
                data[v]=data[v+1];
                data[cek-1]=NULL;
                cek--;
                cout<<"Data dengan nilai"<<hapus<<"terhapus";
            }
    getch();
            }
                else
            {
                if(pil=='3') //cek data
            {
                if(cek==0)
                cout<<"Antrian kosong"<<endl;
                else
            {
                cout<<endl;
                for(int z=0;z<cek;z++)
            {
                cout<<"|";
                cout<<""<<data[z];
                cout<<"|";
            }
            }
    getch();
            }
            }
            }
            }
            }while(pil!='4');
            }


 


Tidak ada komentar:

Posting Komentar