Stack adalah kumpulan data yang disusun secara berurutan dengan prinsip LIFO (last in first out) dimana data baru ditambahkan diatas data lama dan data dihapus dari bagian atas. Terdapat dua operasi utama pada stack yaitu push untuk menambah data dan pop untuk menghapus data dari bagian atas. Stack dapat diimplementasikan menggunakan array atau linked list.
2. Stack
Secara sederhana stack (tumpukan) bisa diartikan
sebagai kumpulan data yang seolah-olah diletakkan di
atas data yang lain.
Prinsipnya kita hanya bisa menambah data dan
menghapus data pada ujung ya sama.
Konsep ini dikenal dengan LIFO (Last In First Out).
4. Stack
Pada gambar di depan dapat dilihat bahwa kotak B
berada diatas kotak A dan dibawah kotak C.
Gambar di depan juga menunjukkan bahwa tumpukan
hanya bisa ditambah melalui atas.
Tumpukan di depan juga hanya dapat diambil
(dikurangi) melalui bagian atas.
5. Operasi Pada Stack
Ada 2 operasi dasar yang bisa dilakukan pada stack
yaitu :
Push (menambah/menyisipkan data)
Pop (menghapus/mengurangi data)
7. Push
Pada gambar di depan mula-mula tumpukan berisi
data 17, 41, 20
Kemudian dilakukan operasi Push data 34 sehingga
tumpukan data pada tumpukan menjadi : 17, 41, 20, 34.
9. Pop
Pada gambar di depan mula-mula tumpukan berisi
data : 17, 41, 20
Kemudian dilakukan operasi Pop sehingga data yang
paling atas dihapus sehingga data pada tumpukan
menjadi : 17, 41
10. Pemanfaatan Stack
Salah satu pemanfaatan Stack (tumpukan) adalah
untuk menulis ungkapan dengan menggunakan notasi
tertentu.
Cara penulisan ungkapan sering disebut dengan notasi
infix, yang artinya bahwa operator ditulis diantara 2
operator.
Selain notasi infix ada juga notasi prefix dan postfix.
Pemanfaatan tumpukan bisa diterapkan pada notasi
postfix.
12. Program Stack
Implementasi Stack (tumpukan) pada C++ dapat
dibuat menggunakan Array atau Linked List.
Berikut ini implementasi Stack menggunakan Array :
13. #include <iostream>
#include <conio>
#include <stdlib>
int top,i;
char key,temp;
char stack[10];
void push()
{
clrscr();
if(top<9)
{
cout<<"Masukkan sebuah karakter : ";
cin>>temp;
top++;
stack[top] = temp;
cout<<"Data sudah masuk, tekan enter..";
}
else
{
cout<<"Stack sudah penuh, tekan enter..";
}
getch();
}
void pop()
{
clrscr();
if(top>=0)
{
top--;
cout<<"Data sudah terhapus, tekan enter..";
}
else
{
cout<<"Stack telah kosong, tekan enter..";
}
getch();
}
void print()
{
clrscr();
if(top>=0)
{
cout<<"Isi Stack : "<<endl<<endl;
for(i=top;i>=0;i--)
{
cout<<" "<<stack[i]<<endl;
}
cout<<endl<<"Tekan enter..";
}
else
{
cout<<"Stack masih kosong, tekan enter..";
}
getch();
}
void main()
{
clrscr();
key = ' ';
top = -1;
do
{
do
{
clrscr();
cout<<"Program Stack"<<endl;
cout<<"1. Push"<<endl;
cout<<"2. Pop"<<endl;
cout<<"3. Print"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Masukkan pilihan anda[1/2/3/4] : ";
key=getche();
}
while ((key!='1') && (key!='2') && (key!='3') && (key!='4'));
if(key=='1')
push();
else if(key=='2')
pop();
else if(key=='3')
print();
}
while (key!='4');
getch();
}