Posted by : Fadhlan Ruchiatna Minggu, 11 Mei 2014


Salah satu metode dalam mengolah data komputasi adalah menggunakan metode Stack. Stack adalah suatu struktur data yang secara umum bersifat First In Last Out (FILO) atau First In Last Serve. Kata kunci : Stack, FILO, First In Last Serve.
Dalam dunia pemrograman struktur data merupakan suatu hal yang sudah tidak asing lagi. Struktur data sangat bermanfaat sekali saat kita memerlukan suatu metode dalam pengolahan data. Kita mengenal, FIFO, LIFO, dan sebagainya. Sepertinya kita pantas berterima kasih pada para pemikir yang telah berhasil menelurkan idenya tersebut.
Salah satu metode dalam mengolah data komputasi adalah menggunakan metode Stack, dalam bahasa Indonesia biasa disebut dengan tumpukan. Prinsip utama dari stack adalah LIFO, Last In First Out, artinya data yang terakhir masuk akan diproses atau dieksekusi terlebih dahulu. Dalam stack ini kita akan menemui beberapa operasi dasar yaitu operasi push, operasi ini berfungsi untuk memasukkan data kedalam stack, kemudia operasi pop yang berfungsi untuk mengeksekusi data yang terakhir masuk (dapat dikatakan untuk mengeluarkan data dari struktur stack). Operasi optional yang sering kita temui adalah isEmpty, berfungsi untuk mengecek apakah stack masih dalam kondisi bersih atau kosong, kemudia kebalikan dari isEmpty yaitu isFull yang berfungsi untuk mengecek apakah semua memori array yang dialokasikan untuk stack telah penuh. Namun bila kita menggunakan pola dynamic stack, operasi isFull tidak terlalu diperlukan karena d.alam pola dyanamic ini tidak ada pembatasan pengalokasian memori. Kemudian operasi yang optional yang biasa kita temui adalah destroy yang berfungsi untuk mengosongkan stack dan display yang akan menampilkan seluruh isi dalam array.
Stack dapat kita gunakan pada beberapa program misalnya program untuk konversi bilangan decimal ke biner, cek palyndrome, reverse word, dan sebagainya. Namun kali ini kita hanya akan membahas implementasi stack pada palindrome.
Pengaplikasian stack pada berbagai bahasa pemrograman khusunya bahasa pemrograman procedural misalnya dalam bahasa C mempunyai 2 jenis pemecahan, yaitu static stack dan dynamic static. Static stack adalah suatu stack atau tumpukan yang telah didefinisikan isi dari stack tersebut. Namun dalam bahasa pemrograman java hal ini dapat kita atasi yaitu apabila stack telah penuh maka kita dapat memperbarui dengan pendefinisian stack yang baru, dalam hal ini kita dapat menggunakan vector ataupun memperbarui array yang ada. Sedangkan dynamic stack adalah suatu stack dengan menggunakan prinsip linked list, oleh karena itu masalah stack penuh dapat kita atasi dari awal.
Aplikasi program stack  untuk mengkonversikan bilangan decimal ke bilangan biner.
Seperti kita tahu untuk mengkonversikan decimal ke biner dapat dilakukan sebagai berikut:
Misal : 18 desimal

2
18
0
2
9
1
2
4
0
2
2
0
2
1
1
0                           ï (18)10 = (10010)2

Bilangan biner adalah yang berwarna merah yang merupakan sisa hasil bagi dengan 2, dibaca dari bawah ke atas. Bilangan itulah yang di PUSH ke stack.

contoh programnya:

#include<stdio.h>
#include<conio.h>

int MAXSTACK; typedef int itemtype;

typedef struct
{

itemtype item[300]; int count;
}stack;

void initializestack(stack *s)
{
s->count = 0;
}

int empty(stack *s)
{


return (s->count == 0);
}

int full(stack *s)
{
return (s->count == MAXSTACK);
}

void push(itemtype x, stack *s)
{
if(full(s))

printf("stack penuh !\n"); else

{

s->item[s->count]=x; ++(s->count);
}
}

int pop(stack *s)
{

if(empty(s)) printf("stack kosong\n"); else

{
--(s->count);
return (s->item[s->count]);
}
}

main()
{

int i, n, m, l, z; int input;
stack tumpukan;

printf("program konversi DECIMAL to BINER\n\n"); initializestack(&tumpukan);

printf("masukkan bilangan desimal = "); scanf("%d", &input);


for(z=1,n=input;n>0;n=n/2, z++)
{
MAXSTACK=z;
}
m=0;
for(n=input;n>0;n=n/2)
{
l=n%2;
push(l,&tumpukan);
++m;
}

printf("bilanga biner = "); for(i=MAXSTACK;i>0;i--)
{
printf("%d", pop(&tumpukan));
}


getch(); return 0;
}



Leave a Reply

Subscribe to Posts | Subscribe to Comments

Welcome to My Blog

Popular Post

Blogger templates

Total Tayangan Halaman

Diberdayakan oleh Blogger.

Pages - Menu

Pengikut

Mengenai Saya

Foto saya
Sumbawa besar, Sumbawa, Indonesia

Blogger templates

- Copyright © FrOst Blog's -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -