Oleh Drs KH.BUDI YONO
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).
Stack
ď‚— Secara sederhana stack (tumpukan) dapat
diilustrasikan sebagai berikut :
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.
Operasi Pada Stack
ď‚— Ada 2 operasi dasar yang bisa dilakukan pada stack
yaitu :
ď‚— Push (menambah/menyisipkan data)
ď‚— Pop (menghapus/mengurangi data)
Push
ď‚— Ilustrasi operasi Push pada stack adalah sebagai
berikut :
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.
Pop
ď‚— Ilustrasi operasi Pop adalah sebagai berikut :
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
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.
Pemanfaatan Stack
ď‚— Contoh notasi postfix : 2 14 + 5 *
Program Stack
ď‚— Implementasi Stack (tumpukan) pada C++ dapat
dibuat menggunakan Array atau Linked List.
ď‚— Berikut ini implementasi Stack menggunakan Array :
#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();
}

Materi kuliah 10 stack

  • 1.
  • 2.
    Stack ď‚— Secara sederhanastack (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).
  • 3.
    Stack ď‚— Secara sederhanastack (tumpukan) dapat diilustrasikan sebagai berikut :
  • 4.
    Stack ď‚— Pada gambardi 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)
  • 6.
    Push ď‚— Ilustrasi operasiPush pada stack adalah sebagai berikut :
  • 7.
    Push ď‚— Pada gambardi 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.
  • 8.
    Pop ď‚— Ilustrasi operasiPop adalah sebagai berikut :
  • 9.
    Pop ď‚— Pada gambardi 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 ď‚— Salahsatu 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.
  • 11.
    Pemanfaatan Stack ď‚— Contohnotasi postfix : 2 14 + 5 *
  • 12.
    Program Stack ď‚— ImplementasiStack (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(); }