QUEUE (ANTREAN)

 

A. Definisi Queue (Antrian)

          Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.

          Tumpukan disebut juga “Waiting Line” yaitu penambahan elemen baru dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan. Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari Queue. Queue jika diartikan secara harfiah, queue berarti antrian. Queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk membeli tiket.

 

 Istilah yang cukup sering dipakai apabila seseorang masuk dalam sebuah antrian adalah enqueue. Sedang istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue.


Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian
Operasi pada Queue atau antrian
1. tambah(menambah item pada belakang antrian)
2. hapus (menghapus elemen depan dari antrian)
3. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak)

Operasi-operasi Queue :
1. Create()
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail  = -1
Queue pada Struktur Data
Queue pada Struktur Data
 
 
2. IsEmpty()
Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.
Queue pada Struktur Data
 
3. IsFull
Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh
Queue pada Struktur Data
 
 
4. Enqueue
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang
Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu
Queue pada Struktur Data
 
5. Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1
Penggeseran dilakukan dengan menggunakan looping.
Queue pada Struktur Data
 
6. Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca
Queue pada Struktur Data
 
7. Tampil()
Untuk menampilkan nilai-nilai elemen Antrian
Menggunakan looping dari head s/d tail
Queue pada Struktur Data

Fitur dasar Queue

Seperti Stack, Queue juga daftar memerintahkan elemen tipe data yang sama.Antrian FIFO (First Out Pertama) struktur. Setelah elemen baru dimasukkan ke dalam Antrian, semua elemen dimasukkan sebelum elemen baru dalam antrian harus dihilangkan, untuk menghilangkan unsur baru. Mengintip () fungsi sering digunakan untuk mengembalikan nilai elemen pertama tanpa dequeuing itu.
 

Contoh Program 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<<"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);
}

Hasil Output Queue

 

No Response to "QUEUE (ANTREAN)"

Posting Komentar