Sabtu, 21 Juni 2014

queue, stack, link list




PRAKTIKUM MANDIRI
QUEUE dan STACK

Nama   : ISNI FACHRI RIZAL
NIM    : F1D013049

A.  Tujuan
1.      Pengimplementasian Queue dan Stack dalam pembuatan program dengan menggunakan link list
B.  Permasalahan
1.        Membuat program untuk pengecekan polindrom dengan menggunakan Queue dan Stack
C.    Gambar Desain Program


D.    Penjelasan Desain
No
OPERASI
DESKRIPSI
C/C++
1
CONSTRUCT
Membuat/membangun link list untuk queue.
Void bangun() {size=0; head=NULL; tail=NULL;};
2
ENQUEUE
Untuk memasukan data ke dalam link list queue.
void queue::masukan(char dt)
3
DEQUEUE
Untuk mengeluarkan data yang ada di dalam queue.
int queue :: keluarkan()
4
CONSTRUCT
Membuat/membangun link list untuk stack.
void bangun() {size=0; head=NULL; tail=NULL;};
5
POP
Untuk memasukan data ke dalam link list stack.
void stack::masukan(char dt)
6
PUSH
Untuk mengeluarkan data yang ada di dalam stack.
int stack :: keluarkan()
7
PERNYATAAN
Untuk menentukan apakah kata/kalimat yang dimasukan polindrom atau tidak.
Void pernyataan bool chek)

E.     Kode Program
#include <iostream>
using namespace std;
class queue{
private :
      struct node{
            char data;
            node*next;
            node*back;
      };
      int size;
      node*head;
      node*tail;
public :
      void bangun(){size=0;head=NULL;tail=NULL;};
      void masukan(char dt);
      int keluarkan();
};

void queue::masukan(char dt){
      node*tmp=new node;
      tmp->data=dt;
      tmp->next=NULL;
      tmp->back=NULL;
      if(size==0){
            head=tmp;
            tail=tmp;
            size++;
      }else{
            tmp->next=head;
            head->back=tmp;
            head=tmp;
            size++;
      }
}

int queue::keluarkan(){
      node *tmp=tail;
      tail=tmp->back;
      return tmp->data;
      delete tmp;
}

class stack{
private :
      struct node{
            char data;
            node*next;
      };
      int size;
      node*head;
      node*tail;
public :
      void bangun(){size=0;head=NULL;tail=NULL;};
      void masukan(char dt);
      int keluarkan();
};

void stack::masukan(char dt){
      node*tmp=new node;
      tmp->data=dt;
      tmp->next=NULL;
      if(size==0){
            head=tmp;
            tail=tmp;
            size++;
      }else{
            tmp->next=head;
            head=tmp;
            size++;
      }
}

int stack::keluarkan(){
      node *tmp=head;
      head=tmp->next;
      return tmp->data;
      delete tmp;
}

void pernyataan(bool chek){
      if (chek==true){
            cout<<"kata/kalimat yang anda masukan POLINDROM\n";
      }else{
            cout<<"kata/kalimat yang anda masukan bukan POLINDROM\n";
      }
}

void main(){
      queue a;
      stack b;
      int c;
      char d, z;
      cout<<"\t-----SELAMAT DATANG-----\n\n";
      do{
      a.bangun();
      b.bangun();
      cout<<"masukan jumlah huruf : ";cin>>c;
      cout<<"masukan kata/kalimat : ";
      for(int i=0;i<c;i++){
            cin>>d;
            a.masukan(d);
            b.masukan(d);
      }

      char e, f;
      bool chek=true;
      for(int i=0;i<c;i++){
            e=a.keluarkan();
            f=b.keluarkan();
            if(e!=f){
                  chek=false;
                  break;
            }
      }

      pernyataan(chek);
      cout<<"mau coba lagi ?(y/n)\n";
      cin>>z;
      }while(z=='y');
      cout<<"\n\t-----TERIMA KASIH-----\n";
      system ("pause");
}

F.     Tampilan Ketika Dijalankan

G.    Cara Kerja Program
Pertama program akan meminta jumlah huruf yang akan dimasukan oleh pengguna, yang akan digunakan sebagai variabel, untuk melakukan pengulangan ketika memasukan data ke dalam queue dan stack.
Setelah pengguna memasukan kata/kalimat yang akan dicek, program akan memasukan karakter per karakter dari kata/kalimat ke dalam queue dan stack.
Karakter-karakter yang terdapat pada queue dan stack akan dikeluarkan satu per satu menggunakan fungsi pengulangan dan kemudian dilakukan perbandingan menggunakan fungsi seleksi.
Apabila perbandingan karakter-karakter berjalan dengan lancar dan tanpa terjadi perbedaan, maka program akan mengeluarkan keluaran yang menyatakan bahwa kata/kalimat tersebut polindrom
Namun apabila terdapat perbedaan ketika melakukan perbandingan, maka program akan mengeluarkan keluaran yang menyatakan bahwa kata/kalimat tersebut bukan polindrom.

Tidak ada komentar:

Posting Komentar