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

Postingan populer dari blog ini

LINEAR QUEUE

STACK/TUMPUKAN

TIPE DATA DAN HIRARKI DATA