STACK (Tumpukan)
Merupakan
bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya
dapat dilakukan pada satu posisi, yaitu posisi akhir dari List (Top).
Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO) yaitu, data yang
masuk terakhir, yang keluar pertama. Seperti tumpukkan pada buku, apabila hendak mengambil
buku yang paling bawah, pastilah kita akan mulai mengeluarkannya dari buku yang
paling atas terlebih dahulu.
Pada mulanya isi top dengan -1, karena array dalam
C/C++ dimulai dari 0, berarti stack adalah KOSONG. Top of Stack akan selalu
bergerak hingga mencapai Max of Stack sehingga menyebabkan stack penuh.
Operasi-operasi/fungsi
stack:
- Push : digunakan untuk menambah item pada stack pada tumpukan paling atas.
Potongan Program:
int push()
{
if
(isfull())
{
cout<<"Tumpukan Sudah Penuh!";
getch();
}
else
{
atas++;
cout<<"Data
masukkan : ";cin>>data[atas];
}
}
- Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas.
Potongan Program:
int pop()
{
if
(isempty())
{
cout<<"stack kosong! ";
getch();
}
else
{
cout<<"Data
keluaran : "<<data[atas];
atas--;
getch();
}
}
- Clear : digunakan untuk mengosongkan stack
Potongan Program:
int clear()
{
atas=-1;
cout<<"stack dikosongkan!";
getch();
}
- IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong.
Potongan Program:
int isempty()
{
if (atas==-1)
return 1;
else
return 0;
}
- IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh.
Potongan Program:
int isfull()
{
if (atas==max-1)
return 1;
else
return 0;
}
Contoh Listing
Program Stack :
#include "conio.h"
#include
"iostream.h"
#include "stdio.h"
//function
int max=5;
int data[5];
int atas=-1;
//pengadaian if, else
int isempty()
{
if (atas==-1)
return
1;
else
return
0;
}
int isfull()
{
if(atas==max-1)
return
1;
else
return
0;
}
int push()
{
if (isfull())
{
cout<<"Tumpukan Sudah
Penuh!";
getch();
}
else
{
atas++;
cout<<"Data masukkan :
";cin>>data[atas];
}
}
int pop()
{
if (isempty())
{
cout<<"stack
kosong! ";
getch();
}
else
{
cout<<"Data keluaran :
"<<data[atas];
atas--;
getch();
}
}
int clear()
{
atas=-1;
cout<<"stack
dikosongkan!";
getch();
}
int view()
{
if (isempty())
{
cout<<"stack
kosong!";
getch();
}
else
{
//perulangan for
for(int
a=atas;a>=0;a--)
cout<<"Data
pada tumpukan ke "<<a<<" :
"<<data[a]<<endl;
getch();
}
}
main()
{
char lagi;
int jawab;
menu:
//perulangan do while
do
{
clrscr();
cout<<"\t---------
Program Stack ----------"<<endl;
cout<<endl;
cout<<"Menu
:"<<endl;
cout<<"\t1. Push
"<<endl;
cout<<"\t2. Pop
"<<endl;
cout<<"\t3. Clear
"<<endl;
cout<<"\t4. View
"<<endl;
cout<<"\t5. Exit
"<<endl;
cout<<endl;
cout<<"Masukkan
Pilihan : ";cin>>jawab;
//pengandaian switch case
switch(jawab)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
clear();
break;
case 4:
view();
break;
}
}
//perulangan do while
while (jawab != 5);
cout<<endl;
//perulangan goto
cout<<"Input Data
Kembali [Y||T] : ";cin>>lagi;
if (lagi=='Y'||lagi=='y')
goto menu;
else
cout<<endl;
cout<<"\t\t***Terima
Kasih***"<<endl;
getch();
}
|
Tidak ada komentar:
Posting Komentar