CIRCULAR QUEUE

PERTEMUAN 07

MATA KULIAH  : STRUKTUR DATA

CIRCULAR QUEUE

Cicular Queue
I. Representasi
Misal n= 10
atau,
Counter : Jumlah pengantri yang ada dalam antrian

Pendefinisian :
F tidak selalu <= R
Setelah R dan F sampai ke n-1, maka tidak direset tetapi melingkar ke 0.

II. Prinsip : FIFO(First In First Out)

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 :

c) Fungsi dasar proses DELETE :

IV. Kondisi antrian (n : jml elemen array).
Beberapa kondisi antrian al :
1. Kondisi awal
a. F = 0, R = -1, COUNTER = 0 kondisi awal
b. COUNTER = 0 : Antrian kosong

2. Misal masuk 1 pengantri, belum ada yang keluar
a. COUNTER > 0 ada isinya
b. F = R isinya hanya 1
c. Counter < n masih bisa diisi

3. Misal masuk lagi 3 pengantri, belum ada yang keluar
a. COUNTER > 0 ada isinya
b. F <> R + 1 ada isinya
c. COUNTER < n masih bisa diisi

4. Misal keluar 1 pengantri
a. COUNTER > 0 ada isinya
b. F <> R + 1 ada isinya
c. COUNTER < n bisa diisi

5. Misal masuk lagi 3 pengantri
a. COUNTER > 0 ada isinya
b. F <> R + 1 ada isinya
c. COUNTER < n bisa diisi

6. Misal keluar 2 pengantri
a. COUNTER > 0 ada isinya
b. R <> R + 1 ada isinya
c. COUNTER < n bisa diisi

7. Misal keluar lagi 3 pengantri
a. COUNTER > 0 ada isinya
b. F = R hanya 1 pengantri
c. COUNTER < n bisa diisi

8. Misal keluar lagi 1 pengantri
a. COUNTER = 0 antrian kosong
b. COUNTER < n bisa diisi

9. Misalkan masuk lagi 3 pengantri
a. COUNTER > 0 ada isinya
b. COUNTER < n bisa diisi

10. Misal masuk lagi 4 pengantri
a. COUNTER > 0 ada isinya
b. COUNTER < n bisa diisi

11. Misal masuk lagi 2 pengantri
a) COUNTER >0 ada isinya
b) F <> R + 1 ada isinya
c) COUNTER < n bisa diisi

12. Misal masuk lagi 1 pengantri
a) COUNTER > 0 ada isinya
b) COUNTER = n antrian penuh

Kondisi antrian:

V. Fungsi INSERT dan DELETE lengkap

Soal
1. Buatlah suatu program Animasi Antrian Melingkar dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT.
Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian
Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian
Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian
Jika dipilih QUIT : program keluar

Jawab :
#include<iostream>
#include<cstdlib>
#include<conio.h>
#define n 3
void INSERT(void);
void DELETE(void);
void CETAKLAYAR(void);
void inisialisasi(void);
int PIL,F,R,COUNTER;
char PILIHAN[1],HURUF;
char Q[n];
using namespace std;
int main()
{
    inisialisasi();
    do
    {

        cout<<"                          CIRCULAR QUEUE                             "<<endl;
        cout<<"_____________________________________________________________________"<<endl;
        cout<<" PROGRAM ANIMASI QUEUE                                               "<<endl;
        cout<<"====================================================================="<<endl;
        cout<<" 1.INSERT                                                            "<<endl;
        cout<<" 2.DELETE                                                            "<<endl;
        cout<<" 3.CETAK ANTRIAN                                                     "<<endl;
        cout<<" 4.KELUAR                                                            "<<endl;
        cout<<" * CATATAN : BATAS INPUT = 3 HURUF                                   "<<endl;
        cout<<"_____________________________________________________________________"<<endl;
        cout<<endl;
        cout<<" SILAHKAN MASUKKAN 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);
    return 0;
}

void INSERT(void)
{
    if(COUNTER<n)
    {
        cout<<endl<<"Masukkan 1 huruf : ";
        cin>>HURUF;
        R = (R + 1) % n;
        Q[R] = HURUF;
        COUNTER++;
    }
    else
        cout<<"Antrian Penuh!"<<endl;

}
void CETAKLAYAR(void)
{
    if(COUNTER>0)
    {
        for(int k = 0; k < COUNTER; k++)
        {
            int i = (F+k) % n;
            cout << "Q["<<k<<"]="<<Q[i] << endl;
        }
    }
    else
        cout<<"Queue kosong!"<<endl;

}
void DELETE(void)
{
    if(COUNTER>0)
    {
        HURUF=Q[F];
        F = (F + 1) %n;
        COUNTER--;

        cout<<"Data yang di ambil :"<<HURUF<<endl;
    }
    else
        cout<<"Antrian Kosong!"<<endl;

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

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