Kamis, 15 Desember 2011

Simulator Queue menggunakan C++

Queue adalah tipe data abstract dimana data hanya bisa dimasukkan ke bagian belakang dan dikeluarkan dari depan. Queue juga sering disebut sebagai implementasi dari FIFO (First In First Out), yang bila diartikan menjadi yang duluan masuk, duluan keluar.

Di sini yang akan saya bahas adalah pembuatan sebuah program untuk mensimulasikan perintah yang bisa dilakukan pada queue menggunakan bahasa C++. Sebelum melanjutkan membaca ke bagian bawah , anda bisa mencoba untuk membuat terlebih dahulu program yang dimaksud, contoh penggunaan :

Input             Queue (belakang - depan)    Output
push(23)        23                                        -
push(20)        20 23                                   -
push(45)        45 20 23                              -
front               45 20 23                              23
back              45 20 23                              45
pop                45 20                                   -
front              45 20                                    20
pop               45                                         -
pop               -                                            -
pop               -                                           Queue is empty
front              -                                           Queue is empty
back              -                                           Queue is empty
push(45)        45                                         -
push(30)        30 45                                    -
push(13)        13 30 45                               -
empty            -                                           45 30 13
end

Queue yang digunakan di dalam program merupakan bagian dari STL (Standard Template Library) C++. Untuk keterangan mengenai fungsi - fungsi yang ada di dalam class bisa dilihat di : http://www.cplusplus.com/reference/stl/queue/
Untuk Queue di bahasa pemograman yang lain bisa dibuat sendiri menggunakan array dan berberapa variabel pembantu.

Kode program yang dimaksud :

#include <iostream>
#include <queue>
#include <string.h>

using namespace std;

int main(){
    char command[25];
   
    queue <int> que;
   
    while(1){
        cin >> command;
       
        if(command[1]=='u'){
            int c=5, temp=0;
            //mengambil angka yang berada didalam kurung
            while(command[c]!=')'){
                temp = temp*10 + (command[c]-'0');
                c++;
            }
            que.push(temp);
        }
        else if(strcmp(command,"back")==0){
            if(!que.empty()){
                cout << que.back() << endl;
            }
            else{
                cout << "Queue is empty" << endl;
            }
        }
        else if(strcmp(command,"front")==0){
            if(!que.empty()){
                cout << que.front() << endl;
            }
            else{
                cout << "Queue is empty" << endl;
            }
        }
        else if(strcmp(command,"pop")==0){
            if(!que.empty()){
                que.pop();
            }
            else{
                cout << "Queue is empty" << endl;
            }
        }
        else if(strcmp(command,"empty")==0){
            while(!que.empty()){
                cout << que.front() << endl;
                que.pop();
            }
        }
        else if(strcmp(command,"end")==0){
            return 0;
        }
        else{
            cout << "Command not recognized" << endl;
        }
    }
   
}

Algoritma dari kode program ini :
1. baca command / perintah
2. jika command adalah
    - "push" baca data yand ada di dalam kurung dan masukkan ke queue, kembali ke langkah 1
    - "back" jika queue tidak kosong cetak data di belakang, jika kosong cetak "Error", kembali ke langkah 1
    - "front" jika queue tidak kosong cetak data di data, jika kosong cetak "Error",kembali ke langkah 1
    - "pop" jika queue tidak kosong keluarkan satu data dari queue, jika kosong cetak "Error", kembali ke langkah 1
    - "empty" kosongkan queue, kembali ke langkah 1
    - "end" lanjutkan ke langkah 3
    - selain perintah - perintah di atas cetak "Error"
3. Program berhenti

Untuk tampilan hasil dari program :

Tidak ada komentar:

Posting Komentar