Contoh
nyata dari penggunaan stack bisa kita lihat di kehidupan sehari-hari
misalnya di parkiran mobil di gang sempit.Seseorang yang datang duluan ke parkiran akan parkir paling pojok, jika ada lima mobil di parkiran maka mobil yang terakhir parkir akan keluar duluan dan mobil yang datang pertama kali akan keluar terakhir.
Sama
halnya dengan data pada konsep stack di algoritma dan pemrograman.
Stack (tumpukan) inilah yang menerapkan konsep yang kita kenal dengan
LIFO (Last-In-First-Out) atau FCLS (First-Come-Last-Serve), artinya
elemen struktur yang dimasukkan ke dalam rangkaian terakhir kali maka
akan muncul pertama kali apabila ditampilkan/dikeluarkan.
Pada
konsep Last-In-First-Out, yang terakhir masuk yang pertama kali keluar.
Jika ada sebanyak NOEL elemen pada sebuah stack, maka elemen ke-NOEL
merupakan elemen TOP.
Berikut ini adalah operator-operator atau nama method yang biasa digunakan dalam pemrograman algoritma stack.
- PUSH: penyisipan (Memasukkan elemen).
- POP: penghapusan (Mengeluarkan elemen puncak).
- IsEmpty: operator yang memeriksa apakah stack kosong.
- IsFull: operator yang memeriksa apakah stack penuh.
- Clear: operator untuk menghapus stack.
Berikut merupakan program stack:
#include <iostream.h>
#include <conio.h>
#define max 10
struct Tumpukan
{
int atas;
int data[max];
}T;
void awal()
{
T.atas=-1;
}
int kosong()
{
if(T.atas==-1)
return 1;
else
return 0;
}
int penuh()
{
if(T.atas==max-1)
return 1;
else
return 0;
}
void input(int data)
{
#include <conio.h>
#define max 10
struct Tumpukan
{
int atas;
int data[max];
}T;
void awal()
{
T.atas=-1;
}
int kosong()
{
if(T.atas==-1)
return 1;
else
return 0;
}
int penuh()
{
if(T.atas==max-1)
return 1;
else
return 0;
}
void input(int data)
{
if(kosong()==1)
{
T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
}
else if(penuh()==0)
{
T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
}
{
T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
}
else if(penuh()==0)
{
T.atas++;
T.data[T.atas]=data;
cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
}
else
cout<<"Tumpukan penuh";
cout<<"Tumpukan penuh";
}
void hapus()
{
if(kosong()==0)
{
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void tampil()
{
if(kosong()==0)
{
for(int i=T.atas;i>=0;i--)
{
cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}
}
else
cout<<"Tumpukan kosong";
}
void bersih()
{
T.atas=-1;
cout<<"Tumpukan kosong!";
}
void main()
{
int pil,data;
awal();
do
{
clrscr();
cout<<"1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan:";
cin>>pil;
switch(pil)
{
case 1:
cout<<"Masukkan data = ";
cin>>data;
input(data);
break;
case 2:
hapus();
break;
case 3:
tampil();
break;
case 4:
bersih();
break;
case 5:
cout<<"Terimakasih, tekan enter untuk keluar";
}
getch();
}
while(pil!=5);
}
Hasil eksekusi program:void hapus()
{
if(kosong()==0)
{
cout<<"Data teratas sudah terambil";
T.atas--;
}
else
cout<<"Data kosong";
}
void tampil()
{
if(kosong()==0)
{
for(int i=T.atas;i>=0;i--)
{
cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];}
}
else
cout<<"Tumpukan kosong";
}
void bersih()
{
T.atas=-1;
cout<<"Tumpukan kosong!";
}
void main()
{
int pil,data;
awal();
do
{
clrscr();
cout<<"1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan:";
cin>>pil;
switch(pil)
{
case 1:
cout<<"Masukkan data = ";
cin>>data;
input(data);
break;
case 2:
hapus();
break;
case 3:
tampil();
break;
case 4:
bersih();
break;
case 5:
cout<<"Terimakasih, tekan enter untuk keluar";
}
getch();
}
while(pil!=5);
}


Tidak ada komentar:
Posting Komentar