Monday, April 21, 2014

Single Stack atau Stack Tunggal

Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.
Secara ilustrasi, stack dapat digambarkan dengan gambar di bawah.
contoh gambar array stack
“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. 3, 4, dan 5 merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa 5 merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan 1. 1 merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.
c-stack
Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian tersebut yaitu Single Stack dan Double Stack.

Single Stack
Single Stack atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus dilakukan bertahap dari indeks TOP-nya.

Di dalam proses single stack terdapat tiga macam proses utama, yaitu :

  1. Inisialisasi
  2. PUSH (Insert, Masuk, Simpan, Tulis)
  3. POP (Delete, Keluar, Ambil, Baca, Hapus)
INISIALISASI
Proses inisialisasi merupakan proses awal yang dilakukan untuk menyimpan indeks penunjuk stack. Roses ini dilakukan dengan intruksi :
4
top = -1;
PUSH
Proses push adalah proses memasukkan data baru ke stack indeks selanjutnya. Algoritma dasar proses PUSH adalah :
17
18
top = top + 1; 
stack[top] = variable_tampung;
POP
Proses pop adalah proses mengeluarkan / mengambil data dari stack dengan indeks yang disimpan pada variable top. Algoritma dasar proses POP adalah :
25
26
variable_tampung = stack[top];
top = top – 1;
Berikut ini adalah contoh code C++ dengan menggunakan struktur data Array Stack serta mengggunakan fungsi Push dan Pop.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdio.h"
void main(){
 int stack[100];
 int top=-1;
 int pilih, i;
 
 do{
  printf("MENU\n");
  printf("1. PUSH\n2. POP\n3. VIEW\n4. EXIT\n");
  printf("Pilih = "); scanf("%d", &pilih); //aslinta tanda "dan" aja,jdi ada amp karena diconvert sama wpnya
 
  switch(pilih){
   case 1://push
    if (top > 100){
     printf("Stack penuh!\n");
    }else{
     printf("Data = "); scanf("%d", &stack[top+1]);
     top++;
    }
    break;
   case 2://pop
    if (top < 0){
                                  printf("Stack kosong!\n");                                                                    }else{
       printf("Data keluar = %d\n", stack[top]);        
                                  top--;      
                                 }                                 
                                 break;
                        case 3://view
                                for(i=top; i<=0; i--){
     printf("%d", stack[i]);
     printf("\n");
                                }
    break;
   case 4:
    printf("Exit…\n");
    break;
    }
  }while (pilih!=4);
}
Thats All

0 comments:

Post a Comment