- Jelaskan pengertian Stack?
- Sebutkan dan jelaskan Operasi dasar Pada Stack ( Tumpukan ) beserta contohnya!
- Sebutkan fungsi push dan pop!
- Buatlah contoh program stack!
- Sebutkan macam-macam stack!
Jawaban :
1. Stack
( Tumpukan ) adlah kumpulan elemen – elemen data yang disimpan dalam satu lajur
linier. Pada Stack, penambahan dan penghapusan elemennya hanya dapat dilakukan
pada satu posisi, yaitu posisi akhir stack. Konsep utamanya adalah Last In
First Out, benda yang terakhir masuk dalam stack akan menjadi benda pertama
yang dikeluarkan dari stack.
2. Operasi dasar yang dilakukan Dalam Stack
ada dua yaitu :
Menambah Komponen (Push)
Menghapus Komponen (Pop)
Operasi
Push adalah Menambah elemen kedalam stack S, dimana penambahan dapat dilakukan
jika stack itu belum penuh. Sedangkan Pop(s) adalah menghapus elemen dari
stack, dimana elemen yang dihapus adalah elemen yang terakhir Masuk ( Last In
First Out)
Operasi Push
Operasi POP
3. Fungsi Push
Untuk
memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang ditunjuk
oleh TOS=Top Of Stack)
Fungsi
Pop
Untuk
mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack.
4. Contoh Program Stack (Tumpukan) untuk membalikan kalimat:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#define MaxElemen 200 //menentukan batas max elemen
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
void main ()
{
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
Output Program :
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#define MaxElemen 200 //menentukan batas max elemen
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
void main ()
{
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
Output Program :
5. Macam-macam stack:
a. Stack
dengan Array
b. Double
Stack dengan Array
This comment has been removed by a blog administrator.
ReplyDeleteokey, sama"...:)
DeleteSemoga sukses :)
sangat membantu,trims.
ReplyDeleteThank
ReplyDelete