Pengertian STACK
Secara sederhana stack atau
tumpukan bisa diartikan sebagai kumpulan data yang seolah-olah diletakkan di atas
data yang lain. STACK adalah salah satu list linear dalam struktur data yang
digunakan untuk menyimpan dan mengambil data dengan konsep LIFO (Last In First
Out). Satu hal yang perlu diingat bahwa kita bisa menambah (menyisipkan)data
dan mengambil (menghapus) data melalui ujung yang sama, yang disebut sebagai
ujung atas stack.
Untuk
menjelaskan pengertian diatas, kita ambil contoh sebagai berikut. Misalkan kita
mempunyai 2 buah kotak yang ditumpuk, sehingga kotak yang satu akan ditumpuk
diatas kotak yang lainnya. Jika kemudian tumpukan 2 kotak tadi, ditambah kotak
ke-tiga, ke-empat, ke-lima dan seterusnya, maka akan diperoleh sebuah tumpukan
kotak yang terdiri dari N kotak.
Secara sederhana, sebuah stack bisa
diilustrasikan seperti ini:
Dari gambar diatas,bisa dilihat bahwa kotak B terletak
diatas kotak A dan ada dibawah kotak C. Kotak D terletak diatas kotak C, kotak
E terletak diatas kotak D dan seterusnya sampai kotak terakhir. Dari gambar
diatas menunjukkan bahwa dalam stack hanya bisa menambah atau mengambil sebuah
kotak lewat satu ujung, yaitu bagian atas, dan yang menjadi ujungnya adalah
kotak F. Jadi jika ada kotak lain yang akan disisipkan, maka kotak tersebut
akan dletakkan diatas kotak F, dan jika ada kotak yang akan diambil, maka kotak
F yang pertama akan diambil.
OPERASI PADA STACK
Ada 2 operasi dasar yang bisa dilaksanakan pada sebuah
stack, yaitu operasi menyisipkan data(push) dan operasi menghapus data(pop).
==>Operasi
Push
prosedur ini terlebih dahulu akan menaikkan
posisi TOP satu level ke atas. Misalkan kondisi stack masih kosong (TOP
= 0), lalu prosedur push akan menaikkan posisi TOP satu level ke atas, yakni ke
posisi 1 (TOP = 1), baru setelah itu data dimasukkan ke dalam array pada
indeks ke-1 (yakni indeks dimana TOP berada).
Berikut adalah deklarasi prosedur push dalam
Bahasa C:
|
Perintah push digunakan untuk memasukkan data ke dalam
stack. Untuk lebih jelasnya perhatikan ilustrasi berikut ini. Misalkan kita
mempunyai data-data 3, 25 dan 9 dalam stack dengan posisi 3 paling bawah dan 9
paling atas. Dan kita akan memasukkan data 34 ke dalam stack tersebut. Tentu saja
data 34 akan diletakkan di atas data 9.
==>Operasi
Pop
Operasi
Pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling atas
dari sebuah stack. Prosedur ini berfungsi untuk mengeluarkan/ menghapus nilai
terakhir (yang berada pada posisi paling atas) dari stack, dengan cara menurunkan nilai
TOP satu level ke bawah.
Misalkan TOP berada pada indeks ke-5, maka ketika akan mengeluarkan/
menghapus
data pada posisi paling atas (pada posisi TOP), prosedur ini
akan menurunkan posisi TOP
ke indeks array ke-4. Berikut deklarasi prosedur pop dalam
Bahasa C:
|
Untuk lebih jelasnya bisa langsung dilihat pada contoh
program STACK:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
struct
stack
{
int data[5];
int atas;
};
stack
tumpuk;
void
main()
{
clrscr();
int pilihan, baru, i;
tumpuk.atas=-1;
do
{
clrscr();
cout<<"1. PUSH
DATA"<<endl;
cout<<"2. POP
DATA"<<endl;
cout<<"3. PRINT
DATA"<<endl<<endl;
cout<<"MASUKKAN PILIHAN :
";
cin>>pilihan;
switch (pilihan)
{
case
1 :
if(tumpuk.atas==5-1)
{
cout<<"TUMPUKAN
PENUH";
getch();
}
else
{
cout<<"MASUKKAN
DATA : ";
cin>>baru;
tumpuk.atas++;
tumpuk.data[tumpuk.atas]=baru;
}
break;
case 2 :
if(tumpuk.atas==-1)
{
cout<<"TUMPUKAN
KOSONG";
getch();
}
else
{
cout<<"DATA YANG AKAN
DI POP = "<<tumpuk.data[tumpuk.atas]<<endl;
tumpuk.atas--;
getch();
}
break;
case 3 :
if(tumpuk.atas==-1)
{
cout<<"TUMPUKAN
KOSONG";
getch();
}
else
{
cout<<"DATA
- "<<endl;
for(i=tumpuk.atas; i>=0; i--)
{
cout<<tumpuk.data[i]<<ends;
}
getch();
}
break;
default :
cout<<"TIDAK
ADA DALAM PILIHAN";
break;
}
}
while((pilihan>=1) &&
(pilihan<=3));
getch();
}
==>PEMANFAATAN
STACK
Salah
satu pemanfaatan stack adalah untuk menulis ungkapan dengan menggunakan notasi
tertentu. Seperti kita ketahui, dalam penulisan ungkapan numeris, kita selalu
menggunakan tanda kurung untuk mengelompokkan bagian mana yang akan dikerjakan
terlebih dahulu.
Sebagai contoh, perhatikan ungkapan berikut ini.
(C+D) *
(E-F)
Dari contoh diatas (C+D) akan dikerjakan lebih dahulu,
kemudian baru (E-F) dan hasilnya akan dikalikan.
Lain halnya dengan contoh berikut ini : C+D*E-F
D*E akan dikerjakan terlebih dahulu, kemudian diikuti yang
lain. Dalam hal ini pemakaian tanda kurung sangat penting karena akan
mempengaruhi hasil akhir.
Cara
penulisan ungkapan sering disebut dengan notasi infix , yang artinya bahwa operator ditulis diantara 2 operator.
Seorang
ahli matematika yang bernama Jan Lukasiewiccz kemudian mengembangkan suatu cara
penulisan ungkapan numeris yang kemudian dikenal dengan nama notasi prefix,
yang artinya adalah bahwa operator ditulis sebelum kedua operand yang akan
disajikan.
Perhatikan contoh dari notasi infix dan prefix berikut ini:
Infix Prefix
A+B +AB
A+B-C -+ABC
(A+B)*(C-D) *+AB-CD
Sekian
pembahasan tentang STACK ,semoga bermanfaat ^,^
Sumber:
1.Referensi dari Buku : ALGORITMA DAN PEMROGRAMAN DENGAN C++
(edisi II)
Oleh : Andri Kristanto,S.Kom
2.http://webcache.googleusercontent.com/search?q=cache:_a1KkQw1NOIJ:elearning.amikom.ac.id/index.php/download/materi/555161-ST015-19/2012/06/20120620_STACK%2520DAN%2520QUEUE.pdf+&cd=1&hl=id&ct=clnk&gl=id
Tidak ada komentar:
Posting Komentar