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(); }