Rabu, 04 Desember 2013

QUEUE

DEFINISI QUEUE

Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi-operasi 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

  
GAMBAR QUEUE & PENGOPERASIANNYA
        Untuk menggambarkan suatu queue dapat dilakukan beberapa cara , yaitu :
        Misal : diberikan Queue Q = [A, B, C, D, E, F], maka Queue Q dapat digambarkan sebagai berikut :
    
A
B
C
D
E
F
FRONT
REAR

F
E
D
C
B
A
REAR
FRONT

atau dapat pula digambarkan dengan posisi tegak.


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define max 10

typedef struct
{
    int data[10];
    int depan;
    int tail;
}
queue;

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

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

int isfull()
{
    if (antrian.tail == 2 )
    return 1;
    else
    return 0;
}

void enqueue(int data)
{
    if(isempty()==1)
    {
            antrian.depan=antrian.tail=0;
            antrian.data[antrian.tail]=data;
            cout <<antrian.data[antrian.tail] ;
    }
    else if (isfull()==0)
    {
            antrian.tail++;
            antrian.data[antrian.tail]=data;
            cout<<antrian.data[antrian.tail];
    }
    else if (isfull()==1)
    {
    cout<<"Antrian penuh !!"<<endl;
    }
}

void dequeue()
{
    int i;
    int e = antrian.data[antrian.depan];
    if (antrian.tail == -1){
    cout <<"Antrian data kosong " <<endl;
}
else
{
    for (i=antrian.depan; i<=antrian.tail -1; i++)
    {
            antrian.data[i] = antrian.data[i+1];
    }
    antrian.tail--;
    cout <<"Data yg keluar lebih dulu = "<<e<<endl;
    }
}

void clear()
{
   antrian.depan = antrian.tail =-1;
   cout <<"Data antrian clear..."<<endl;
}

void tampil()
{
   if(isempty()==0)
   {
           
            cout <<endl;
                        for (int i=antrian.depan; i<=antrian.tail; i++)
            {
                                    cout <<"| "<<antrian.data[i]<<" |";
                                    }
            }
            else
   cout<<"Antrian data kosong ";
}

int isready(int data_input)
{
   for(int i=antrian.depan; i<=antrian.tail; i++)
   {
            if(antrian.data[antrian.tail]==data_input)
            return 1;
                        else
            return 0;
            }
}
void main()
{
            int pil;
            int data;
            create();
            do
            {
            //clrscr();
cout <<"Data dalam antrian" <<endl;
            cout <<"__________________"<<endl;
      cout <<"MIFTACHUL LUDFIE"<<endl;
      cout <<"12.1.03.02.0156"<<endl;
      cout <<"2 F"<<endl;
            cout<<"MENU\n";
                        cout<<"1. ENQUEUE\n2. DEQUEUE\n3. VIEW\n4. EXIT\n";
            cout<<"Pilihan = ";
            cin>>pil;

                        switch(pil)
      {
                                    case 1:
         {
                                    cout <<endl;
                                    cout <<"Data = ";cin>>data;
                                    if (isready(data)==1)
            {
                        cout << data << " Sudah dimasukkan";
                                    }
            else
            {
                        enqueue(data);
                                    }
                                                break;
                                    }
                                    case 2:
            {
                                    cout <<endl;
                                    dequeue();
                                                break;
                                    }
                                    case 3:
            {
                                    cout <<endl;
                                    tampil();
                                                break;
                                    }
            }
                        getch();
            }
while(pil!=4);
}





Tidak ada komentar:

Posting Komentar