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)
{
}
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));
}
}
Related Posts :
- Back to Home »
- Mengkonversi Bilangan desimal ke biner dengan menggunakan prinsip LIFO