Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.
Secara ilustrasi, stack dapat digambarkan dengan gambar di bawah.
“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.
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 :
- Inisialisasi
- PUSH (Insert, Masuk, Simpan, Tulis)
- POP (Delete, Keluar, Ambil, Baca, Hapus)
Proses inisialisasi merupakan proses awal yang dilakukan untuk menyimpan indeks penunjuk stack. Roses ini dilakukan dengan intruksi :
4 |
top = -1; |
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; |
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; |
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); } |
0 comments:
Post a Comment