Senin, 15 Juni 2020

PERTEMUAN 8 DEQUEUE

Dequeue

Dequeue adalah proses untuk mengeluarkan elemen artinya menghapus data. Jika tidak bisa mengeluarkan elemen data satupun karena kosong akan terjadi error yang disebut dengan Underflow.
Ada banyak cara penyajian suatu deque di dalam komputer. Namun yang biasa
digunakan adalah penyajian dengan cara penempatan di dalam sebuah array sirkular atau
array putar DEQUE.
Di sini kita menggunakan dua pointer atau penunjuk, LEFT dan RIGHT, yang
berturut-turut menunjuk pada sisi kiri dan sisi kanan dari deque. Kita senantiasa
mengasumsikan bahwa elemen deque berurut dari kiri ke kanan. Pengertian sirkular di atas
timbul karena elemen DEQUE(l) berada sesudah elemen DEQUE(N) dari array.

Dequeue Kebalikan dari fungsi enqueue, dequeue digunakan untuk mengambil data yang sudah masuk di urutan pertama.  Sehingga kita tinggal membaca data yang ada di posisi head.  Nah inilah fungsi dari head.  Jangan lupa kita cek dulu apakah queue kosong atau tidak.  Tapi jika ada isinya, setelah data diambil, data dibelakangnya digeser ke depan.
  • Clear

Operasi clear digunakan untuk menghapus data yang ada di dalam queue.  Caranya cukup merubah nilai pada head dan tail menjadi -1.  Tidak perlu diperhatikan data yang ada di dalam array
  • View

Operasi ini digunakan untuk melihat data yang ada didalam queue.  Caranya adalah dengan membaca data pada index yang terdapat diantara head sampai tail

Contoh Program :
#include <conio.h>
#include <iostream.h>


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) // tail == -1
   {
       return true;
   }
   else
   {
       return false;
   }
}
void clear()
{
    tail=-1;
}

void main()
{
    create(); // panggil dulu prosedur create
    home:
   clrscr();
    cout<<"Silahkan pilih salah satu"<<endl;
   cout<<"=========================="<<endl;
   cout<<"1. EnQueue"<<endl;  // sama dengan (push) +
   cout<<"2. DeQueue"<<endl;  // sama dengan (pop) -
   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 yang keluar adalah : ";
            cout<<data[head];
            for (int i=0; i<tail; i++)
            {
                data[i] = data[i+1];
            }
            tail--;
         }
         getch();
         goto home;
      break;

      case 3:
            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();
}




Soal :

1. Buatlah suatu program Animasi Deque dengan 6 buah pilihan : INSERT KIRI, INSERT KANAN, DELETE KIRI, DELETE KANAN, CETAK ANTRIAN, QUIT.


Jawab :
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#define n 10
using namespace std;

void INSERT();
void DELETE();
void CETAKLAYAR();
void Inisialisasi();
void RESET();
int PIL,F,R;
char PILIHAN [1],HURUF;
char Q[n];
int main ( )
{
     Inisialisasi();
     do
     {
           cout<<" ANIMASI QUEUE"<<endl;
           cout<<"=============="<<endl;
           cout<<"1. INSERT"<<endl;
           cout<<"2. DELETE"<<endl;
           cout<<"3. CETAK QUEUE"<<endl;
           cout<<"4. QUIT"<<endl;
           cout<<"PILIHAN : "; cin>>PILIHAN;
           PIL=atoi(PILIHAN);
           switch (PIL)
           {
           case 1:
                INSERT ();
                break;
           case 2:
                DELETE();
                break;
           case 3:
                CETAKLAYAR ();
                break;
           default:
                cout<<"TERIMA KASIH"<<endl;
                break;
           }
           cout<<"press any key to continue"<<endl;
           getch();
           system("cls");
     }
     while (PIL<4);
}
void INSERT()
{
      if(R<n-1)
      {
           cout<<endl<<"MASUKAN 1 HURUF : ";
         cin>>HURUF;
         Q[++R]=HURUF;
}
else
    cout<<"Antrian Penuh"<<endl;
}

void CETAKLAYAR()
{
     if(F<R+1)
     {
           for (int i=F;i<=R;i++)
                cout<<"Q["<<i<<"] = "<<Q[i]<<endl;
     }
     else
           cout<<"Antrian Kosong"<<endl;
}
void DELETE()
{
     if(F<=R+1)
     {
           HURUF=Q[F];
           Q[F++]='';
           cout<<"Data yang diambil : "<<HURUF<<endl;
           if(F==n)
                RESET();
     }
     else
           cout<<"Antrian Kosong"<<endl;
}
void Inisialisasi()
{
     F=0;
     R=-1;
}

void RESET()
{
     F=0;
     R=-1;
}

Tidak ada komentar:

Posting Komentar

PERTEMUAN 18 SORTING

SORTING Sorting  adalah proses pengurutan atas sekumpulan data sejenis. Pengurutan dapat dilakukan dari yang terkecil hingga terbesar ( a...