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;
}
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