STACK PADA C++
PENGERTIAN
STACK
Stack (tumpukan) bisa diartikan seperti
meletakkan data baru di atas data yang sudah ada. Prinsip dari stack sendiri
yaitu Last In First Out (LIFO) atau data yang terakhir masuk (input) akan
terlebih dahulu keluar (muncul).
Ilustrasinya bisa dilihat pada gambar di
bawah :
Dari gambar di atas menunjukkan bahwa
data hanya dapat ditambah dari atas.
Dalam stack ada 2 istilah yang digunakan
yaitu :
· PUSH : untuk
memasukkan data; dan
· POP :
untuk mengeluarkan data.
Berikut ini adalah ilustrasi dari PUSH :
Mula-mula stack sudah berisi data yaitu
: 24, 61, 14, dan 50. Kemudian akan dilakukan push data 31, sehingga data pada
stack menjadi 24, 61, 14, 50, dan 31.
Untuk POP berikut ini adalah
ilustrasinya :
Pada gambar di atas bisa dijelaskan
bahwa Mula-mula stack sudah berisi data yaitu : 24, 61, 14, 50 dan 31. Kemudian
akan dilakukan pop data 31, sehingga data pada stack menjadi 24, 61, 14, dan
50.
Jenis-jenis stack ada 2 yaitu :
· SINGLE STACK; dan
· DOUBLE STACK
Disini saya akan membahas SINGLE STACK
saja.
Single stack sendiri dapat
direpresentasikan dengan menggunakan array 1 dimensi. Berikut ilustrasi dari
single stack :
Adapun proses – proses pada single
stack, yaitu :
· Awal (inisialisasi);
· PUSH : memasukkan data; dan
· POP : memunculkan data
Berikut ini adalah kondisi-kondisi stack
:
Kondisi
Stack
|
Posisi
TOP
|
KOSONG
|
Top = -1
|
PENUH
|
Top = n-1
|
BISA DIISI
|
Top < n-1
|
ADA ISINYA
|
Top > -1
|
Berikut ini adalah algoritma dari PUSH :
if (Top < n-1)
{
Top = Top + 1;
S[Top] = x;
}
else
cout<<“Stack Penuh”;
PUSH dapat
dilakukan jika kondisi stack BISA DIISI.
Dan ini adalah
algoritma dari POP :
if (Top > -1)
{
x = S[Top];
Top = Top - 1;
}
else
cout<<“Stack Kosong”;
POP dapat
dilakukan jika kondisi stack ADA ISINYA.
Sekarang
langsung saja kita ke studi kasus dan source codenya pada Borland C++.
Studi kasus :
Inputkan 10 data
ke stack, kemudian tampilkan data terakhir diinputkan sampai yang pertama
diinputkan.
Source code :
#include<iostream.h>
#include<conio.h>
#define n 10
void main()
{
int S[n];
int x,top;
top=-1;
cout<<"-------------------------------"<<endl;
cout<<"STACK"<<endl;
cout<<"-------------------------------"<<endl;
while (top<=n-1)
{
cout<<"INPUTKAN ISI STACK : ";
cin>>x;
top=top+1;
S[top]=x;
}
cout<<"-------------------------------"<<endl;
cout<<"ISI STACK :
"<<endl;
while (top>=0)
{
x=S[top];
cout<<x<<"
";
top=top-1;
}
cout<<endl<<"-------------------------------"<<endl;
getch();
}
Inilah hasilnya jika di run :
Kita coba ke studi kasus dan source code
lainnya :
Studi kasus :
Buatlah stack seperti studi kasus di
atas dengan tambahan cari data terbesar dari stack.
Source code :
#include<iostream.h>
#include<conio.h>
#define n 10
void main()
{
int S[n];
int i,x,top,max;
top=-1;
cout<<"-------------------------------"<<endl;
cout<<"STACK"<<endl;
cout<<"-------------------------------"<<endl;
while (top<=n-1)
{
cout<<"INPUTKAN ISI STACK : ";
cin>>x;
top=top+1;
S[top]=x;
}
cout<<"-------------------------------"<<endl;
cout<<"ISI
STACK : "<<endl;
while
(top>=0)
{
x=S[top];
cout<<x<<" ";
top=top-1;
}
cout<<endl<<"-------------------------------"<<endl;
for(i=1;i<=9;i++)
{
if (S[i]>max)
max=S[i];
}
cout<<"DATA TERBESAR
= "<<max<<endl;
getch();
}
Berikut adalah hasilnya jika di run :
SEKIAN MATERI
SINGLE STACK DARI SAYA
TERIMA KASIH
0 komentar:
Posting Komentar