Stack bisa diartikan sebagai suatu kumpulan data yang
seolah-olah ada data yang diletakkan di atas data yang lain. Di dalam stack ini
kita dapat menambahkan ataupun mengambil (menghapus) data melalui ujung yang
sama yang disebut dengan ujung atas stack (top of stack). Sifat dari STACK
adalah LIFO atau Last In First Out, dapat kita artikan yang terakhir masuk
ialah yang pertama keluar.
Dalam penyajian stack, kita dapat menggunakan array,
dengan anggapan bahwa banyaknya elemen maksimal dari suatu stack tidak melebihi
batas maksimum banyaknya elemen array. Pada suatu ketika, ukuran stack akan
sama dengan ukuran array, bila diteruskan penambahan datanya maka akan terjadi
overflow. Oleh karena itu, perlu ditambahkan data untuk mencatat posisi ujung
stack.
Contoh 1 :
Berikut merupakan ilustrasi stack:
Listing 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){
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);}
Screen Shot program sebagai berikut:
Contoh 2
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
const int maks=4;
struct Tumpukan {
int isi[maks];
int atas;
};
Tumpukan x;
void push(int y){
x.atas++;
x.isi[x.atas]=y;
}
void inisialisasi (){
x.atas=-1;
}
void pop(){
x.atas--;
}
void main()
{
inisialisasi();
int z,b;
cin>>z>>b;
push(z); push(b);
cout<<x.isi[x.atas]<<" atas : "<<x.atas-1<<endl;
cout<<x.isi[x.atas]<<" atas : "<<x.atas<<endl;
pop();
cout<<x.isi[x.atas]<<" atas : "<<x.atas<<endl;
cout<<x.isi[x.atas]<<" atas : "<<x.atas+1<<endl;
cin>>z;
push(z);
cout<<x.isi[x.atas]<<" atas : "<<x.atas<<endl;
_getch();
}
lengkap banget
BalasHapusthanks, salam kenal Palembang.
BalasHapusMakasih gan infonya
BalasHapusjirr ternyata dosen ane ngambil materi disini makasi y gan telah berkontribusi di dunia persulatan lol maksud ane per codingan
BalasHapusHaa, sama2 gan. Semoga bermanfaat.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusthanks gan infonya
BalasHapusarieflongor.blogspot.com
terima kasih infonya,,
BalasHapusternyata Dosen saya juga ngambil dari sini,, :D
thank's untuk materinya gan (y) :D
BalasHapusbang ada yang punya link c++ 64 bit ??
BalasHapusclrscr(); ga bisa nih gan
BalasHapusItu mungkin krna anda pake code::blocks / dev c++
HapusMungkin ada yang ingin tau lagi tentang stack Klik Disini Ismynr.xyz
BalasHapus