Sabtu, 06 Juni 2015

QUEUE

QUEUE

  • Queue Dengan Array

a.       Bersifat FIFO
b.       Elemen yang pertama masuk ke antrian akan keluar pertama kalinya
c.       DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian
d.       Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular Array 
  • Queue Linier Array
a.       Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya
b.       Sehingga membutuhkan 2 variabel : Head dan Tail
  • Operasi-operasi:
Create()
a.       Untuk menciptakan dan menginisialisasi Queue
b.       Dengan cara membuat Head dan Tail  = -1 
  • IsEmpty()

a.       Untuk memeriksa apakah Antrian sudah penuh atau belum
b.       Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
c.       Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
d.       Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.
  • Fungis IsFull

a.       Untuk mengecek apakah Antrian sudah penuh atau belum
b.       Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh.
  • Enqueue

a.       Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang
b.       Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu.
  • Dequeue()

a.       Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
b.       Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1
c.       Penggeseran dilakukan dengan menggunakan looping.

  • Clear()


a.       Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
b.       Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca.
  • Tampil()

a.       Untuk menampilkan nilai-nilai elemen Antrian
b.       Menggunakan looping dari head s/d tail 
  • Dari penjelasan diatas mari kita rubah kedalam bahasa pemograman C++ :

#include <iostream>
#include <conio>

int tail, max, head;
int data[5];
int menu;
void create()
{
tail = -1;
   head = 0;
   max = 4;
}

bool isfull()
{
if (tail==max)
   {
    return true;
   }
   else
   {
    return false;
   }
}
bool isempty()
{
if (tail<head)
   {
    return true;
   }
   else
   {
    return false;
   }
}
void clear ()
{
tail=-1;
}
void main()
{
create(); // panggil prosedur create
   home:
clrscr();
   cout<<"Silahkan pilih salah satu"<<endl;
   cout<<"1. EnQueue"<<endl;
   cout<<"2. DeQueue"<<endl;
   cout<<"3. Print"<<endl;
   cout<<"4. Clear"<<endl;
   cout<<"Pilih salah satu (1-4) : ";
   cin>>menu;
   switch(menu)
   {
    case 1:
      if (isfull()==true)
         {
          cout<<"Antrian Penuh";
         }
         else
         {
          tail++;
            cout<<"Masukan data ke antrian : ";
            cin>>data[tail];
         }
         getch();
         goto home;
      break;

      case 2:
      if(isempty()==true)
         {
          cout<<"Antrian kosong";
         }
         else
         {
          cout<<"Data yg keluar adalah : ";
            cout<<data[head];
            for (int i=0; i<tail; i++)
            {
            data[i] = data[i+1];
            }
            tail--;
         }
         getch();
         goto home;
      break;
      if(isempty()==true)
         {
          cout<<"Antrian kosong";
         }
         else
         {
      cout<<"Isi data pada antrian : ";
            for(int i=head; i<=tail; i++)
            {
            cout<<data[i]<<" ";
            }
         }
         getch();
         goto home;
      break;
   }
getch();
}

  • Setelah pengcodingan berhasil maka akan tampi seperti dibawah ini :

Semoga bermanfaat untuk kita semua :) Sekian dan Terimakasih sampai jumpa dipost selanjutnya :) 

Salam STIKOMERS www.stikom-bali.ac.id



Tidak ada komentar:

Posting Komentar