Kamis, 04 Juni 2015

Stack pada C++


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
Sumber : Materi Dosen Struktur Data : Yohana Nugraheni, S,Kom., M.T

0 komentar:

Posting Komentar