Stack / Tumpukan pada Struktur Data
Stack / Tumpukan
Apa itu Stack?
Stack merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhir kali dimasukkan akan pertama kali keluar dari tumpukan tersebut. Tumpukan dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix).
Contoh dalam kehidupan Sehari-hari misalkan buku, jika kita mau menyusun buku pasti kita bakal menumpuk buku buku tersebut na jadi anda bisa membayangkan buku buku tersebut di tumpuk
contoh Scrip untuk Stack adalah :
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#define MaxElemen 200 //menentukan batas max elemen
using namespace std;
struct Tumpukan
{
char Isi[MaxElemen];
int Atas;
} T;
//sub program PUSH berfungsi memasukkan elemen ke dalam STACK
void PUSH (char x){ //fungsi push
if(T.Atas == MaxElemen){ //untuk mengecek apakah stack sudah penuh
cout<<"Tumpukan Sudah Penuh";
getch();
}
else{
T.Atas = T.Atas + 1;
T.Isi[T.Atas] = x;
}
}
//sub program POP berfungsi mengambil elemen dari STACK
char POP(){
char hasil;
if(T.Atas == 0){
cout<<"Tumpukan sudah kosong";
hasil = ' ';
}
else{
hasil = T.Isi[T.Atas];
T.Atas = T.Atas - 1;
}
return hasil;
}
//program utama
{
int I; // pencacah
char Kalimat[MaxElemen]; //kalimat yang akan dibalik
clrscr();
T.Atas =0; // nilai awal tumpukan
cout<<"Aplikasi Stack untuk Membalik kalimat\n";
cout<<"----------------------------------------\n\n";
// Inputkan kalimat yang akan dibalik
cout<<"Masukkan sembarang kalimat : ";gets(Kalimat);
clrscr();
cout<<"Kalimat Asli : "<<Kalimat;
//Mem-PUSH huruf dari kalimat ke dalam tumpukan
for(I=0;I<strlen(Kalimat);I++)
{
PUSH(Kalimat[I]);
}
cout<<"\nKalimat Setelah di Balik : ";
//Mem-POP sekaligus mencetak isi tumpukan sehingga diperoleh kalimat yang terbalik
for (I=0;I<strlen(Kalimat);I++)
{
cout<<""<<POP();
}
getch();
} //Akhir Program Utama
Sekian terimakasih jika ini membantu untuk anda silahkan komen dan share ya
Apa itu Stack?
Stack merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhir kali dimasukkan akan pertama kali keluar dari tumpukan tersebut. Tumpukan dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix).
Contoh dalam kehidupan Sehari-hari misalkan buku, jika kita mau menyusun buku pasti kita bakal menumpuk buku buku tersebut na jadi anda bisa membayangkan buku buku tersebut di tumpuk
na menurut saya jika membayangkan susah saya masukin aja tumpukan buku . Jadi jika lebih mudah membayangkannya ingar seperti tumpukan buku , jadi tumpukan buku di atas adalah konsep dari stack.
konsep stack adalah LIFO yang artinya Last in First Out dalam arti yang terakhir masuk dan pertama keluar jadi jika di artikan di tumpukan buku di atas adalah misalknya jika kita mau mengambil buku di atas yang paling atas ya yang paling atas itu adalah buku yang berwarna orange jadi buku orange yang akan pertama kali di ambil sebab dia masuk terakhir jadi dia keluar lebih awal dari buku buku yang di bawahnya.
Dalam konsep Stack ini ada beberapa Method yang biasa kita kenal yaitu adalah :
1.PUSH = Memasukan ke dalam Stack /Tumpukan
Misalnya
Misalkan kita memasukan nilai Push(4) dan push (5)
2.POP= Kebalikan dari Push jika Push memasukan jika Pop mengambil data dari stack
misalkan kita sudah mempunyai nilai 4 dan 5 kemudian kita Pop yang ke ambil adalah nilai paling atas
jadi Pop=5
3,PEEK = Melihat elemen yang teratas dari sebuah Stack
ingat ya PEEK dan POP itu beda Peek itu melihat nilai yang paling teratas sedangkan Pop mengambil nilainya jadi jika di contohi dengan gambar di atas Peek = 5 karena nilainya paling atas adalah 5
4.Isempty = Melihat apakah Stack itu kosong atau tidak
Sebagai Contoh
Balik Kata
Misalkan nama yang saya inginkan Yogi jika di balik menjadi Igoy kan jadi kita tinggal ngePush aja nama nama mereka
Push(I)
Push(G)
Push(O)
Push(Y)
Pop I (dalam arti pop ketemu I)
Pop G
Pop O
Pop Y
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
#define MaxElemen 200 //menentukan batas max elemen
using namespace std;
struct Tumpukan
{
char Isi[MaxElemen];
int Atas;
} T;
//sub program PUSH berfungsi memasukkan elemen ke dalam STACK
void PUSH (char x){ //fungsi push
if(T.Atas == MaxElemen){ //untuk mengecek apakah stack sudah penuh
cout<<"Tumpukan Sudah Penuh";
getch();
}
else{
T.Atas = T.Atas + 1;
T.Isi[T.Atas] = x;
}
}
//sub program POP berfungsi mengambil elemen dari STACK
char POP(){
char hasil;
if(T.Atas == 0){
cout<<"Tumpukan sudah kosong";
hasil = ' ';
}
else{
hasil = T.Isi[T.Atas];
T.Atas = T.Atas - 1;
}
return hasil;
}
//program utama
{
int I; // pencacah
char Kalimat[MaxElemen]; //kalimat yang akan dibalik
clrscr();
T.Atas =0; // nilai awal tumpukan
cout<<"Aplikasi Stack untuk Membalik kalimat\n";
cout<<"----------------------------------------\n\n";
// Inputkan kalimat yang akan dibalik
cout<<"Masukkan sembarang kalimat : ";gets(Kalimat);
clrscr();
cout<<"Kalimat Asli : "<<Kalimat;
//Mem-PUSH huruf dari kalimat ke dalam tumpukan
for(I=0;I<strlen(Kalimat);I++)
{
PUSH(Kalimat[I]);
}
cout<<"\nKalimat Setelah di Balik : ";
//Mem-POP sekaligus mencetak isi tumpukan sehingga diperoleh kalimat yang terbalik
for (I=0;I<strlen(Kalimat);I++)
{
cout<<""<<POP();
}
getch();
} //Akhir Program Utama
Sekian terimakasih jika ini membantu untuk anda silahkan komen dan share ya
No comments: