Stack

Dasar Teori
• STACK atau TUMPUKAN adalah suatu struktur data yang seolah-olah terlihat
seperti data yang tersusun secara ‘menumpuk’, dimana ada data yang terletak
diatas data yang lainnya.
• Bersifat LIFO (Last In First Out), berarti data yang masuk terakhir akan keluar
pertama.
• Operasi pada Stack :
IsFull : mengecek apakah STACK sudah penuh
IsEmpty : mengecek apakah STACK sudah kosong
Push :menambah data pada STACK pada tumpukan paling atas
Pop :mengambil data pada STACK pada tumpukan paling atas
Print :mencetak semua data dalam tumpukan

ilustrasi stack


Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi
elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat
pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika
kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen
teratas, yaitu Compo juga.






Menambahkan sebuah item pada posisi paling atas dari sebuah tumpukan




contoh program
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
//deklarasi 'STACK' dengan struct dan array
struct STACK
{
int data[5];
int atas;
};
//deklarasi variabel 'tumpuk' dari struct
STACK tumpuk;
void main()
{
clrscr();
int pilihan,baru,i;
//inisialisasi awal
tumpuk.atas=-1;
do
{
clrscr();
cout<<"1.Push Data"<<endl;
22
cout<<"2.Pop Data"<<endl;
cout<<"3.Print Data"<<endl;
cout<<endl;
cout<<"Pilihan = ";
cin>>pilihan;
switch(pilihan)
{
case 1:
{
if(tumpuk.atas==5-1)
{
cout<<"Tumpukan penuh";
getch();
}
else
{
cout<<"Data yang akan di-push = ";
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"<<endl;
getch();
}
else
{
cout<<"Data = "<<endl;
for(i=0; i<=tumpuk.atas; i++)
{
cout<<tumpuk.data[i]<<" ";
23
}
getch();
}
break;
}
default:
{
cout<<" Tidak ada dalam pilihan "<<endl;
}
}
}
while( pilihan >=1 && pilihan <= 3 );
getch();}

Labels: