Stack adalah daftar atau urutan elemen yang elemennya dapat diambil dan ditambah hanya melalui satu jalur, yaitu bagian depan list. Kalau di analogikan seperti tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas.
Ada 2 operasi dari stack, yaitu :
a. Operasi push yaitu operasi menambahkan elemen data pada urutan terakhir atau paling atas.
b. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dari stack.
Tumpukan disebut juga “Push Down Back” yaitu penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop). Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama keluar” (Last in First Out/LIFO). Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.
Berikut adalah contoh dari stack:
#include <iostream.h>
#include <conio.h>
void push(int batas,int isi);
void cetak();
void pop();
int top=0,data[100],bott=0;
void main()
{
int b=0,a,i,j,k;
do
{
clrscr();
cout<<"\tProgram Stack\n\n";
cout<<"\t+++++++++++++\n";
cout<<"1.Push Data\n2.Pop Data\n3.cetak\nPilihan : ";
cin>>a;
switch (a)
{
case 1:
cout<<"Masukkan Data Max : ";
cin>>k;
cout<<"Masukkan Isi Data : ";
cin>>j;
push(k,j);
break;
case 2:
pop();
break;
case 3:
cetak();
break;
cout<<"Pilihan Tidak Tersedia";
break;
}
getch();
}
while (b==0);
}
void pop()
{
if (top==0)
cout<<"Tidak Tersedia";
else
{
if (top==bott)
{
top=0;
bott=0;
}
else
top=top-1;
cout<<"Data Telah di hapus";
}
}
void cetak()
{
int i;
if (top==0)
cout<<"Maaf data tidak tersedia";
else
{
cout<<"\nPosisi Top\t: "<<data[top];
cout<<"\nPosisi Bottom\t: "<<data[bott];
cout<<"\nData Yang tersimpan\t:";
for (i=1;i<=top;i++)
cout<<data[i]<<" ";
}
}
void push(int batas,int isi)
{
int max,c;
max=batas;
if (top>=max)
cout<<"Maaf Data Penuh";
else
{
if (top==0)
{
top=top+1;
bott=bott+1;
data[top]=isi;
}
else
{
top=top+1;
data[top]=isi;
}
cout<<"Data Ditambahkan\n";
cout<<"\nIsi Data\t: "<<data[top];
cout<<"\nData Saat Ini\t: "<<top;
}
}