Kembali ke atas!
  • LinkedIn
  • Join Us on Google Plus!
  • Subcribe to Our RSS Feed

Sabtu, 30 April 2016

Contoh Soal dan Program Struktur Data dan Algoritma

11.22 // by Alif Project // , , , , // 3 comments

1. a. Buatlah implementasi program stack dan queue dengan studi kasus masing-masing ? (untuk studi kasus di harapkan setiap mahasiswa berbeda kalaupun ada yang sama akan berbeda nilainya berdasarkan pengiriman jawaban yang lebih awal).

b. Jelaskan mengapa  implementasi stack dengan array tidak bermasalah sedangkan implementasi queue dengan array ada sedikit bermasalah, jelaskan?

2. a. Dengan menggunakan  stack  buatlah  subprogram  untuk melakukan  konversi notasi  infix ke notasi postfix, sebagai  gambaran  :
·         Input berupa ekspresi aritmatika  dalam notasi  infix sebagai  berikut : ((A*B) + C/D-E^F)*G
·         Output yg dihasilkan ekspresi aritnaatika dalam notasi postfix:  AB*CD/+EF^-G*

b. Diketahui Queue dinamis Q (implementasi dengan pointer), yg mempunyai elemen berupa karakter,  Buatlah algoritma untuk membalik urutan isi dari queue Q.
·         Input   : queue dinamis Q (yang misal isinya : A, B, C, D, E)
·         Output : queue dinamis Q (yang isinya E, D, C, B, A)



Jawaban

1.      a. Stack (tumpukan) bisa diartikan sebagai suatu kumpulan data yang seolah-olah ada data yang diletakan diatas data yang lain. 
·         Menu Utama pada program Stack

·         Push Stack
Operasi Push adalah Menambah elemen kedalam stack S, dimana penambahan dapat dilakukan jika stack itu belum penuh. Stack dikatakan penuh Jika posisi atas sudah berada pada posisi N.


·      Pop Stack
Pop(s) adalah menghapus elemen dari stack, dimana elemen yang dihapus adalah elemen yang terakhir Masuk (LIFO Last In First Out) atau elemen penghapusan, dimana proses penghapusan dapat dilakukan jika stack tidak dalam keadaan Kosong


Dibawah ini merupakan tampilan ketika data berhasil dihapus.

·      IsEmpty Stack
Fungsi yang digunakan untuk mengecek apakah stack sudah kosong, jika terisi maka akan menampilkan Data terisi.


·      IsFull Stack
Fungsi yang digunakan untuk mengecek apakah stack sudah penuh. Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1)  maka belum full. Disini dijelaskan bahwa tumpukan data belum terisi penuh atau full.


·      Clear Stack
Untuk mengosongkan stack. Stack akan dianggap kosong bila ujung atas stack pada posisi -1


Dibawah ini merupakan Source code dari program diatas.


#include <stdio.h>
#define MAXSIZE 7

void Push();
void Pop();
void Print();
void Init();
void Clear();
void IsEmpty();
void IsFull();

int i=0;
int top;
int pilih;
int nilai[7];

struct Tumpukan{
      int atas;
      int data[10];    
}T;

void main(){
     
      system("COLOR 3B");
     
      Init();
      do{
            system ("cls");
            printf("\n\t\t\t\t\tNama     : Alif Purnama Shidiq\n");
            printf("\t\t\t\t\tNIM      : 11140910000129\n");
            printf("\t\t\t\t\tKelas    : TI A\n");

            printf("\t\t\t\t\tDosen    : Asep Taufik Muharram, M.Kom\n\n");

printf("\t1.\t Menambah Tumpukan Batu Bata\n");
            printf("\t2.\t Menghilangkan Tumpukan Batu Bata\n");
            printf("\t3.\t Menampilkan Data Batu Bata\n");
            printf("\t4.\t Mengecek Apakah Tumpukan Batu Bata Tersebut Sudah Kosong\n");
            printf("\t5.\t Mengecek Apakah Tumpukan Batu Bata Tersebut Sudah Penuh\n");
            printf("\t6.\t Menghapus Tumpukan Batu Bata\n");
            printf("\n\n\tMasukkan Menu yang Anda Pilih : ");
            scanf("%d",&pilih);
            printf ("\n");
            printf ("Tekan ENTER untuk Melanjutkan\n");
            getche ();
     
           
            switch(pilih){
                 
                  case 1: Push(); 
                  break;
                  case 2: Pop();  
                  break;
                  case 3: Print();
                  break;
                  case 4: IsEmpty();
                  break;
                  case 5: IsFull();
                  break;
                  case 6: Clear();
                  break;     
                                               
            }

            system("cls");
}while(top<=7);
     
}

void Init(){
      T.atas = -1;
}

void Push(){
      int num;
      if(T.atas == (MAXSIZE-1)){
            printf("\n\n\tTumpukan Bata Sudah Penuh");
            getche();
      }else{
            printf("\n\n\tBata Ke- : ");
            scanf("%d",&num);
            T.atas  = T.atas +1;
            T.data[T.atas] = num;
      }
}
void Pop(){
      int num;
      if(T.atas == -1){
            printf("\n\n\tTumpukan Bata Sudah Kosong");          
            getche();
            return;
      }else{           

            num = T.data[T.atas];
            printf("\n\n\tBata yang Dihapus adalah Bata dengan nilai %d",T.data[T.atas]);
            T.atas = T.atas-1;
      }
      getche();
}
void Print(){
      int i;
            if(T.atas == -1){
                  printf("\n\n\tTumpukan Bata Tidak Terisi");                
            }
            else{      
                  for(i=T.atas; i>=0;i--){                 
                  printf("\n\n\tTampilkan Urutan Bata : %d ",T.data[i]);                 
                  }
            }
      getche();   
void IsFull(){
      if(T.atas == (MAXSIZE-1)){
            printf("\n\n\tBata Sudah Penuh");
      }else{           
            printf("\n\n\tTumpukan Bata Belum Penuh");
      }
     
      getche();
}

void IsEmpty(){
      if(T.atas == -1){
            printf("\n\n\tTidak Ada Bata");          
      }else{           
            printf("\n\n\tTerisi Bata");
      }
     
      getche();
}

void Clear(){
      do{
            T.atas-=1;
      }while(T.atas!=-1);
     
      printf("\n\n\tSemua Bata Telah Terhapus");
      getche();
}            



Untuk Link download File lengkap dan Program ada dibawah ini.


DOWNLOAD