Kamis, 04 Juni 2015

Queue

Queue atau antrian. Pengertian antrian pada system computer sama dengan antrian yang kita alami sehari-hari seperti antrian pelanggan yang ingin membayar barang di kasir, antrian kendaraan yang ingin melewati jalan tol. Aturan dasar pada antrian adalah hanya pelanggan yang ada di depan meja kasir lah yang akan dilayani dan jika ada pelanggan yang baru datang maka dia harus mengantri dari belakang antrian, sehingga queue memiliki sifat FIFO(First In First Out).
Queue adalah sebuah array yang bertipe data yang sama yang memiliki 2 buah variable yaitu ‘head’ dan ‘tail’ yang berfungsi sebagai penanda ujung-ujung dari sebuah queue. Proses penambahan data pada queue dinamakan ‘Enqueue’ dan pengurangan data di sebut ‘Dequeue’. Dan sama juga seperti stack, dimana ada proses pengecekan apakah queue itu kosong sebelum di ambil(IsEmpty) atau queue itu penuh sebelum ditambahkan data baru(IsFull).

Contoh coding queue


#include<iostream.h>

#include <stdio.h>

#include <conio.h>

typedef struct
{

int data [6];

int head;

int tail;



}

Queue;

Queue antri;

void Create()
{
antri.head=antri.tail=-1;
}




int kosong()

{

if(antri.tail==-1)

return 1;

else

return 0;

}

int penuh()

{

if(antri.tail==6-1)

return 1;

else

return 0;



}

void Enqueue(int data)

{

            if(kosong()==1)

            {

                        antri.head=antri.tail=0;

                        antri.data[antri.tail]=data;




                        void show();

                        {

                                    if(kosong()==0)

                                  




                                    {

                                                for(int i=antri.head;i<=antri.tail;i++)

                                                {

                                                            cout<<antri.data[i];

                                                }

                                    }

                                    else

                                                cout<<"Data Anda Kosong !\n";

                                               

                        }

            }

            else

            if(penuh()==0)

          

            {

                        antri.tail++;

                        antri.data[antri.tail]=data;




            }

}

int Dequeue()

{

            int i;

            int e=antri.data[antri.head];




            for(i=antri.head;i<=antri.tail-1;i++)

           

            {

                        antri.data[i]=antri.data[i+1];

                       

            }

            antri.tail--;

           
            return e;

           

}

void clear()



{

antri.head=antri.tail=-1;

cout<<"Data sudah diclearkan";

}




void show()


{

            if (kosong()==0)

            {

                        for (int i=antri.head;i<=antri.tail; i++)

                        {

                                    cout<<antri.data[i]<<" ";

                        }

            }

            else

            {

                        cout<<"Data Anda Kosong\n";

            }

}




void main()

{

int pil;

int data;

Create();




 do



{

clrscr();

printf ("\n======== MENU ========\n");

printf ("  1. Enqueue\n");

printf ("  2. Dequeue\n");

printf ("  3. show\n");

printf ("  4. Destroy\n");

printf ("  5. Keluar\n");

printf ("======================\n");

printf ("Masukkan Pilihan Anda : ");

cin>>pil;




switch(pil)



{

            case 1:

                        cout<<"Masukan Data : ";

                        cin>>data;

                        Enqueue(data);

                        break;

                      



            case 2:

                        cout<<"Elemen yang keluar : "<< Dequeue();

                        break;

               



            case 3:

                        show();                  

                        break;




            case 4:

                        clear();
                        break;

            case 5:

                        clrscr();
                        break;

}

getch();

} while(pil!=5);

}


Source : Data Structures Using C++ by DS Malik

0 komentar:

Posting Komentar