PERTEMUAN XI
STACK
Stack atau tumpukan adalah kumpulan elemen yang hanya dapat di tambah atau dihapus dari satu ujung ( gerbang ) yang sama. Stack mempunyai sifat LIFO ( Last In Firs Out ) yang berarti bahwa yang terakhir masuk akan pertama keluar.
Representasi stack dapat dilakukan menggunakan Array atau Linked List, Kedua representasi mempunyai keunggulan dan kelemahan.
Kelebihan Stack :
Penambahan dan pengapusan data dapat di lakukan dengan cepat, yaitu selama memori masih tersedia penambahan data bisa terus dilakukan. dengan demikian tidak ada kekuatiran terjadinya stack overflow.
Kekurangan Stack :
Setiap sel tidak hanya menyimpan value saja, melainkan juga pointer ke sel berikutnya. Hal ini menyebabkan implementasi stack memakai linked list akan memerlukan memory yang lebih banyak dari pada di implementasikan dengan array. Setiap halaman pada Linked list hanya bisa di akses dengan cara sekuensial sehingga lambat.
DEKLARASI STACK
Bentuk deklarasi pertama :
#define MaxS n
TypeData Isi[MaxS]
TypeData Top;
Bentuk deklarasi kedua :
#define MaxS n
Struct Stack
{
Type Data Isi [MaxS] ;
TypeData Top ;
};
OPERASI PADA STACK
Ada 2 operasi dasar :
Operasi insert ( PUSH ) Penyisipkan elemen ataupun Operasi memasukan elemen ke dalam suatu stack.
Operasi Delete ( POP ) Pengapusan elemen ataupun Operasi mengambil elemen paling puncak dari Stack.
INISIALISASI STACK
Sebelum stack dapat di oprasikan terlebih dahulu di inisialisasikan dengan memberi harga S.Top =0
Void INITS ( Stack&S )
{
S.Top = 0 ;
}
MENCETAK STACK
Isi Suatu Stack dapat dicetak dengan menggunakan fungsi berikut.
Void CETAK ( Stack S )
{
int I;
cout<<endl<<"Isi Stack : ";
if (S.Top !=0
{
For(i=1;i<S.Top ; i++)
Cout<<S.Isi [i];
}
else
cout<<"Stack Kosong....";
}
CONTOH CODING STACK ( PUSH,POP )
// Adita program
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int top=-1;
char stack[2];//asumsi max stack 100
char x;
void push()
{
cout<<"masukkan satu karakter: ";
cin>>x;
top++;
stack[top]=x;
}
void pop()
{
if(top<0){
cout<<"stack kosong"<<endl;
return;
}
x=stack[top];
top--;
cout<<"karakter yang di 'POP' adalah "<<x<<endl;
}
void cetak()
{
if(top<0){
cout<<"stack kosong" <<endl;
return ;
}
int i=0;
for(i=top;i>=0;i--)
cout<<stack[i]<<endl;
cout<<"\n'ADITA'"<<endl;
}
int main(int argc, char *argv[])
{
char input;
cout<<"\t\t\tPROGRAM STACK ADITA\n"<<endl;
cout<<"MASUKKAN PILIHAN: "<<endl;
cout<<"\t1.PUSH"<<endl;
cout<<"\t2.POP"<<endl;
cout<<"\t3.TAMPILKAN"<<endl;
cout<<"\t4.QUIT"<<endl;
while(true)
{
cout<<"\nMasukan pilihan: ";
cin>>input;
if(input=='1'){
push();
}else if(input=='2'){
pop();
}else if(input=='3'){
cetak();
}else if(input=='4'){
break;
}else{
cout<<"Perintah ' "<<input<<" tidak dikenal"<<endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
KESIMPULAN
Stack atau tumpukan adalah kumpulan elemen yang hanya dapat di tambah atau dihapus dari satu ujung ( gerbang ) yang sama. Stack mempunyai sifat LIFO ( Last In Firs Out ) yang berarti bahwa yang terakhir masuk akan pertama keluar.
Representasi stack dapat dilakukan menggunakan Array atau Linked List, Kedua representasi mempunyai keunggulan dan kelemahan. Ada dua operasi dasar Stack yaitu operasi insert ( PUSH ) , operasi delete ( POP ). Sebelum stack dapat di oprasikan terlebih dahulu di inisialisasikan dengan memberi harga S.Top =0
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int top=-1;
char stack[2];//asumsi max stack 100
char x;
void push()
{
cout<<"masukkan satu karakter: ";
cin>>x;
top++;
stack[top]=x;
}
void pop()
{
if(top<0){
cout<<"stack kosong"<<endl;
return;
}
x=stack[top];
top--;
cout<<"karakter yang di 'POP' adalah "<<x<<endl;
}
void cetak()
{
if(top<0){
cout<<"stack kosong" <<endl;
return ;
}
int i=0;
for(i=top;i>=0;i--)
cout<<stack[i]<<endl;
cout<<"\n'ADITA'"<<endl;
}
int main(int argc, char *argv[])
{
char input;
cout<<"\t\t\tPROGRAM STACK ADITA\n"<<endl;
cout<<"MASUKKAN PILIHAN: "<<endl;
cout<<"\t1.PUSH"<<endl;
cout<<"\t2.POP"<<endl;
cout<<"\t3.TAMPILKAN"<<endl;
cout<<"\t4.QUIT"<<endl;
while(true)
{
cout<<"\nMasukan pilihan: ";
cin>>input;
if(input=='1'){
push();
}else if(input=='2'){
pop();
}else if(input=='3'){
cetak();
}else if(input=='4'){
break;
}else{
cout<<"Perintah ' "<<input<<" tidak dikenal"<<endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
KESIMPULAN
Stack atau tumpukan adalah kumpulan elemen yang hanya dapat di tambah atau dihapus dari satu ujung ( gerbang ) yang sama. Stack mempunyai sifat LIFO ( Last In Firs Out ) yang berarti bahwa yang terakhir masuk akan pertama keluar.
Representasi stack dapat dilakukan menggunakan Array atau Linked List, Kedua representasi mempunyai keunggulan dan kelemahan. Ada dua operasi dasar Stack yaitu operasi insert ( PUSH ) , operasi delete ( POP ). Sebelum stack dapat di oprasikan terlebih dahulu di inisialisasikan dengan memberi harga S.Top =0
Tidak ada komentar:
Posting Komentar