DOUBLE ENDED QUEUE
PERTEMUAN 08
MATA KULIAH : STRUKTUR DATA
DOUBLE ENDED QUEUE
Double Ended Queue
I. Representasi
Misal n= 10
Insert Kiri : masuk dari pintu kiri
Insert Kanan : masuk dari pintu kanan
Delete Kiri : keluar dari pintu kiri
Delete Kanan : keluar dari pintu kanan
II. Prinsip : Keluar masuk dari kedua ujung
III. Proses :
- AWAL (Inisialisasi)
- INSERT (Sisip, Masuk, Simpan, Tulis)
- DELETE (Hapus, Keluar, Ambil, Dilayani)
a) Fungsi dasar untuk proses AWAL :
b) Fungsi dasar proses INSERT KIRI:
c) Fungsi dasar proses INSERT KANAN:
d) Fungsi dasar proses DELETE KIRI:
e) Fungsi dasar proses DELETE KANAN :
IV. Kondisi antrian (n : jml elemen array).
1. Kondisi awal
a. L = 0, R = -1 kondisi awal
b. L = R - 1 Antrian kosong
c. L = 0 Penuh kiri
d. R < n – 1 Bisa insert kanan
2. Misal masuk 1 pengantri dari kanan
a. L < R + 1 ada isinya
b. L = 0 penuh kiri
c. R < n - 1 bisa insert kanan
3. Misal masuk lagi 3 pengantri dari kanan
a. L < R + 1 ada isinya
b. L = 0 penuh kiri
c. R < n - 1 bisa insert kanan
4. Misal keluar 1 pengantri dari kiri
a. L < R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R < n - 1 bisa insert kanan
5. Misal masuk lagi 3 pengantri dari kanan
a. L < R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R < n – 1 bisa insert kanan
6. Misal keluar 5 pengantri melalui kiri
a. L < R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R < n – 1 bisa insert kanan
d. L = R hanya 1 pengantri
7. Misal keluar 1 pengantri melalui kiri
a. L = R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R < n - 1 bisa insert kanan
8. Misal masuk 4 pengantri dari kiri
a. L < R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R < n – 1 bisa insert kanan
9. Misalkan masuk lagi 2 pengantri dari kanan
a. L < R + 1 ada isinya
b. L > 0 bisa insert kanan
c. R < n – 1 bisa insert kanan
10. Misal masuk lagi 1 pengantri dari kanan
a. L < R + 1 ada isinya
b. L > 0 bisa insert kiri
c. R = n – 1 penuh kanan
11. Misal masuk lagi 3 pengantri dari kiri
a) L < R + 1 ada isinya
b) L = 0 penuh kiri
c) R = n - 1 penuh kanan
12. Misal seluruh pengantri keluar dari kiri
a) L = R + 1 antrian kosong
b) L > 0 bisa insert kiri
c) R = n – 1 penuh kanan
Kondisi antrian:
V. Fungsi lengkap
a) INSERT KIRI lengkap
b) INSERT KANAN lengkap
c) DELETE KIRI lengkap
d) DELETE KANAN lengkap
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;
}
DAFTAR PUSTAKA
Buku
1. Esakov, Jeffrey, Tom Weiss, Data Structures An Advanced Approach Using C, Prentice-Hall, Inc. 1989
2. Hariyanto, Bambang, Struktur Data, Informatika Bandung, Pebruari 2000
3. Kadir, Abdul, Pemrograman Dasar Turbo C, Andi Offset, Yogyakarta, 1991
4. Kruse, Robert L. Data Structures & Program Design, Prentice-Hall, Inc. 1987
5. Standish, Thomas A. Data Structures, Algorithms & Software Principles In C, Addison Wesley, 1995
Komentar
Posting Komentar