Jumat, 05 Juni 2015

Queue dan Contohnya

Nama  : Agung Wijaya Kusuma
NIM     : 140010222
Kelas   : AB141
Nama Dosen : Ida Bagus Kadek Surya Arnawa. S.Kom
Nama Asisten Dosen : Steven Anthony

     D.    Queue
Queue merupakan kumpulan elemen dengan penyisipan dan penghapusan elemen yang dilakukan dari sisi atau gerbang yang berbeda. Queue  mempunyai dua gerbang yaitu gerbang depan dan gerbang belakang. Antrian adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut dengan sisi depan atau front).. Dengan demikian Queue mempunyai sifat FIFO (First In First Out), yaitu elemen yang pertama masuk akan keluar pertama juga.

  •     Deklarasi Queue

#define MaxQ N
#define false 0
#define true 1
Struct Queue
{
            TypeData Isi[MaxQ + 1];
            TypeData Depan;
            TypeData Belakang;
} ;

Contoh Queue dalam Coding :

#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<<"ga 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"<<endl;
      cout<<"2. Dequeue"<<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);
}
Sumber           : Buku Konsep dan Implementasi Struktur Data dengan C++
Oleh                : Lamhot Sitorus dan David J.M Sembiring, Andi Kristanto, S.Kom
Penerbit           : Andi dan Graha Ilmu

0 komentar:

Posting Komentar