Assalamu’alaikum
Wr, Wb, oke pada kesempatan kali ini saya akan membahas sebuah program yang bernama
stack, stack ini merupakan sebuah tumpukan dan stack ini bersifat LIFO yaitu (
Last In Firs Out ) , contohnya seperti tumpukan piring saat akan mengambil
piring maka piring paling atas ( terakhir dimasukan ) yang akan di ambil
Oke Disini
saya mempunyai beberapa contoh program stack, langsung saja tanpa berlama –
lama kita masuk kecontoh pertama
Script Praktikum 8.1
#include <iostream.h>
#include <conio.h>
#define max 5
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";}
else
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 Running :
Pembahasan
Program
ini adalah contoh sebuah stack yang dimana di dalamnya terdapat operasi PUSH (
memasukan data ), POP ( menghapus data yang terakhir diinputkan ) Tampil (
Menampilkan isi tumpukan) CLEAR ( menghapus semua tumpukan ) dan exit. Hal
pertama yang harus dilakukan adalah memilih dari ke 5 menu tersebut di mana
setiap menu terdapat statemennya masing – masing dan stantemen itu terdapat
dalam function.
Operasi
PUSH atau INPUT, dalam statement PUSH terdapat perintah if(kosong()==1) jadi
jika tumpukan kosok maka kita akan menginput sebuah nilai yang nantnya akan
ditampung atau ditumpuk dalam variable array data. Dan kondisi else if
(penuh()==0) maka akan melakukan penginputan sekali lagi krn itu sbg pemberi
tahu bahwa tumpukan hampir penuh
Operasi
POP atau Hapus dalam statement ini hampir sama yaitu terdapat kondisi
if(kosong()==0) maksudnya adalah jadi tumpukan yang kosong itu tersisa 0 atau
dianggapnya sudah penuh, dan function kosong itu mempunyai nilai 0 jika nilai
T.atas lebih dari -1, dan mempunyai nilai satu jika T.atasnya itu -1, jadi
selama nilai fungsi kosongnya bernilai 0 maka stack akan bisa di hapus dan juga
dengan mengurangnya T.atas. misalnya t.atas = 5 jika di hapus maka tinggal 4
data yang tersisa, dan jika t.atas sudah mempunyai nilai 0 maka akan keluar
notice Tumpukan Kosong.
Operasi
Tampilan atau VIEW untuk menampilkan stack LIFO maka hanya perlu dilakukan
pemanggilan beserta perulangan for dan deremen, jadi jika menggunakan oprasi
decremen maka yang akan keluar itu nilai yg terakhir diinputkan dan batasan
dari perulangan nya adalah T.atas krn setiap melakukan penginputan nilai T.atas
akan bertambah jd nilai T.atas menunjukan jumlah data dalam tumpukam
Script Praktikum 8.2
#include<iostream.h>
#include<conio.h>
#include<string.h>
struct
{
char data [15][100], max[15];
int i,j;
}stack;
void push()
{
stack.i++;
cout<<" Masukan Data : ";
cin>>stack.max;
strcpy(stack.data[stack.i], stack.max);
}
void pop ()
{
if(stack.i>0)
{
cout<<" Data Yang Terambil :
"<<stack.data[stack.i]<<endl;
stack.i--; stack.j--;
}
else
cout<<" Tak Ada Data Yang Terambil
"<<endl;
}
void view(int n)
{
if(stack.j>0)
{
for(int e=n; e>=1; e--)
cout<<stack.data[e]<<endl;
}
else
{
cout<<" Tak Ada Data Tersimpan
"<<endl;
}
}
void clear()
{
stack.j=0; stack.i=0;
}
void main()
{
int n, plh;
ayo:
clrscr();
cout<<" Contoh Program Stack [Tumpukan]
\n\n ";
cout<<" Maksimal Tumpukan Data : ";
cin>>n;
stack.data[n];
stack.i=0;
stack.j=0;
balik:
clrscr();
cout<<"\n 1. Push \n 2. Pop \n 3. View \n
4. Clear \n 5. Qiit \n";
cout<<"\n Pilih : "; cin>>plh;
cout<<endl;
if(plh==1)
{
if(stack.j<n)
{
stack.j++;
push();
}
else
{
cout<<" Tumpukan Penuh "<<endl;
getch();
}
goto balik;
}
else if(plh==2)
{
pop();
getch(); goto balik;
}
else if(plh==3)
{
view (stack.i);
getch(); goto balik;
}
else if(plh==4)
{
clear();
getch();
goto balik;
}
else if(plh==5)
{
getch(); goto ayo;
}
else
{
cout<<" Input Yang Anda Masukan Salah !!!
"<<endl;
getch(); goto ayo;
}
}
Hasil Running
Pembahasan
Program
ini sama halnya dengan program sebelunya namun terdapat beberapa yang berbeda
yaitu dalam program ini kita dapat menentukan batasan perulangan input dan
output atau berapa maksimal tumpukan yang dapat diinputkan, dan dalam pemilihan
menunya menggunakan if else dan menggunakan perulangan go to untuk kembali ke
menu pemilihan .
Study Kasus
Latihan 8.1
Konsep stack dilogikakan seperti sebuah
tumpukan barang yang tersusun keatas dengan ketinggian tumpukan yang telah di
tentukan, untuk mengilustrasikannya program dibawah ini.
Script Study Kasus
Latihan 8.1
#include<conio.h>
#include<stdio.h>
#define N 20
main()
{
int nilai[N],i,jml;
printf(" Jumlah Maksimal Tumpukan (<=20) =
");
scanf("%d",&jml);
for(i=0; i<jml; i++)
{
printf(" Data ke-%d = ", i+1);
scanf("%d",&nilai[i]);
if(i==jml-1)
{
printf("Tumpukan Penuh");
getch();
}
}
for(i=jml-1; i>=0;i--)
{
printf("\n data ke-%d = %d", i+1, nilai[i]);
}
getch();
return 0;
}
Hasil Running
Pembahasan
Ini adalah
sebuah contoh program, pertama masukan jumlah tumpukan yang dapat di tampung
dan maksimal tumpukan dibawah 20, karena data yang akan diinput akan di tampung
dalam array maka lakukan penginputan dengan menggunakan for dan batasanya adalah
nilai yang di inputkan pertama, masukan if dengan kondisi (i==jml-1) if ini
berguna untuk memberitahu jika tumpukan suda penuh. Dan kondisi if i==jml-1 itu
karena dalam array indeks pertama di hitung 0 dan batasan indeks itu adalah
nilai dikurangi 1 jadi jika element arraynya 5 maka indeks terakhirnya 5-1=4. Untuk
output gunakan for untuk outputnya namun i nya di dekremen kan (i--) karena
stack ini mempunyai sifat LIFO ( last in first out ) jadi data yang di input
terakhir akan keluar pertama.
Nah itulah beberapa program Stack dan juga
pembahasan yang dapat saya sharing, semoga ilmu yang saya bagikan dapat
bermanfaat bagi kalian semua para pembaca, mungkin sampai disini dulu sharing
tentang pemrograman khususnya program Stack yang bisa saya posting. Dan Jangan
lupa ya jika
kalian mempunyai kritik dan saran silahkan tambahkan pada kolom komentar.
Terima kasih atas kunjungan kalian.



sudah diperiksa
BalasHapusWahh ,sy blm mengerti :D
BalasHapus