Sabtu, 06 Juni 2015

MENGENAL APA ITU QUEUE DALAM C++ ?


QUEUE


Definisi Queue(Antrian)

Antrian atau Queue adalah struktur data yang meniru antrian orang yang sedang menunggu pelayanan, misalnya di depan seorang teller bank, atau antrian orang yang sedang membeli karcis pertunjukan. Urutan proses antrian sering disebut FIFO (First In First Out). Yang pertama masuk antrian, itulah yang pertama dilayani.



Operasi-operasi dalam Queue sebagai berikut:
  • EnQueue  Memasukkan data ke dalam antrian
  • DeQueue  Mengeluarkan data terdepan dari antrian
  • Clear Menghapus seluruh antrian
  • IsEmpty  Memeriksa apakah antrian kosong.
  • IsFull  Memeriksa apakah antrian penuh.



Implementasi antrian dapat dilakukan dengan membuat tipe data buatan bernama Queue, misalnya sebagai berikut :

Type Queue : record

            count, front, rear : integer;
            isi : array[1 .. maks] of item;


Dimana :
Count adalah variabel untuk mencacah jumlah elemen dalam antrian.
Front adalah variabel yang menunjuk pada awal (bagian depan) antrian.
Rear adalah variabel yang menunjuk pada bagian akhir antrian.
Isi adalah array yang menyimpan isi antrian. 
Item adalah tipe data yang disimpan dalam queue.

 


Proses – proses yang diperlukan dalam struktur data antrian antara lain adalah :
  • Proses untuk memulai antrian (initialize): menciptakan array untuk antrian, kemudian memulai semua indeks, count=0, rear=0, front=1.
  • Proses untuk menambahkan elemen (add Queue) : elemen ditambahkan dari belakang sehingga count bertambah 1, dan demikian juga rear bertambah 1.
  • Proses untuk mengambil elemen (delete Queue) : elemen diambil dari antrian selalu dari depan sehingga count berkurang 1, dan front bertambah 1.
  • Proses untuk menghitung jumlah elemen (size) : berapa nilai count.

Berikut contoh codding Queue:

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

#define max 10
typedef struct
{
    int data[max];
    int head;
    int tail;
}Queue;

Queue antrian;

void create()
{
    antrian.head=antrian.tail=-1;
}

int IsEmpty()
{
    if(antrian.tail==-1)
    return 1;
    else
    return 0;
}

int IsFull()
{
    if(antrian.tail>=max-1)
    return 1;
    else
    return 0;
}

void Enqueue(int data)
{
    if(IsEmpty()==1)
    {
        antrian.head=antrian.tail=0;
        antrian.data[antrian.tail]=data;
        cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk!!!";
    }
    else if(IsFull()==0)
    {
        antrian.tail++;
        antrian.data[antrian.tail]=data;
        cout<<"Data "<<antrian.data[antrian.tail]<<"Masuk!!!";
    }
    else if(IsFull()==1)
    {
        cout<<"Ruangan Penuh!!!"<<endl;
        cout<<data<<"Gak Bisa Masuk!!!";
    }
}
void Dequeue()
{
    int i;
    int e = antrian.data[antrian.head];
    if(antrian.tail==-1)
    {
        cout<<"Gak ada antrian! Data kosong"<<endl;
    }
    else
    {
        for(i=antrian.head;i<antrian.tail-1;i++)
        {
            antrian.data[i]=antrian.data[i+1];
        }
        antrian.tail--;
        cout<<"Data yang keluar lebih dulu = "<<e<<endl;
    }
}
void clear()
{
    antrian.head=antrian.tail=-1;
    cout<<"Duh lega, ruangan jadi gak sumpek..."<<endl;
    cout<<"Data Clear";
}
void tampil()
{
    if(IsEmpty()==0)
    {
        cout<<"Data Dalam Antrian"<<endl;
        cout<<"=======================================";
        cout<<endl;
        for(int i=antrian.head;i<=antrian.tail;i++)
        {
            cout<<"| " <<antrian.data[i]<<" |";
        }
    }
    else
    {
        cout<<"Gak ada antrian! Data kosong";
    }

}
void main()
{
    int pil;
    int data;
    create();
    do
    {
        clrscr();
        cout<<"Implementasi Antrian dengan Struct"<<endl;
        cout<<"======================================";
        cout<<endl;
        cout<<"1. Enqueue (Push)"<<endl;
        cout<<"2. Dequeue (Pop)"<<endl;
        cout<<"3. Print "<<endl;
        cout<<"4. Clear "<<endl;
        cout<<"5. Exit "<<endl;
        cout<<"Masukkan pilihan anda : ";
        cin>>pil;

         switch(pil)
         {
            case 1:
            {
                cout<<endl;
                cout<<"Data = ";
                cin>>data;
                Enqueue(data);
                break;
            }
            case 2:
            {
                cout<<endl;
                Dequeue();
                break;
            }
            case 3:
            {
                cout<<endl;
                tampil();
                break;
            }
            case 4:
            {
                cout<<endl;
                clear();
                break;
            }
        }
        getch();
    }
    while(pil!=5);
}

Tidak ada komentar:

Posting Komentar