STACK
3.1 Pengertian Stack (Tumpukan)
Stack (Tumpukan) adalah kumpulan elemen-elemen data yang disimpan dalam satu lajur
linear. Kumpulan elemen-elemen data hanya boleh diakses pada satu lokasi saja yaitu posisi
ATAS (TOP) tumpukan. Tumpukan digunakan dalam algoritma pengimbas (parsing),
algoritma penilaian (evaluation) dan algoritma penjajahan balik (backtrack). Elemen-elemen
di dalam tumpukan dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First
Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan
dari stack. Tumpukan disebut juga “Push Down Stack” yaitu penambahan elemen baru (PUSH)
dan pengeluaran elemen dari tumpukann (POP). Contoh pada PDA (Push Down Automaton).
3.2 Operasi Dalam Stack(Tumpukan)
Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah Push dan
Pop. Operasi – operasi yang dapat diterapkan adalah sebagai berikut :
1. Push : digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
2. Pop : digunakan untuk mengambil item pada Stack pada Tumpukan palingatas.
3. Clear : digunakan untuk mengosongkan Stack.
4. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.
5. IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
6. Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.
Prefix adalah keadaan dimana simbol operator diletakkan sebelum dua operand.
Postfix adalah keadaan dimana simbol operator diletakkan sesudah dua operand.
Cara pengerjaan :
a. Cari operator ke-1 : *, ambil dua operand dari kiri A dan B, sehingga infixnya
adalah (A*B)
b. Cari operator ke-2 : /, ambil dua operand sebelumnya (A*B) dan C, sehingga
infixnya adalah ((A*B)/C)
b. Cari operator ke-2 : /, ambil dua operand sebelumnya AB* dan C sehingga
postfixnya adalah AB*C/
c. Cari operator ke-3 : +, ambil dua operand sebelumnya AB* C/ dan D, sehingga
postfixnya adalah AB*C/D+Contoh ke-5 : Postfix ke Infix : ABCD*/-
c. Cari operator ke-3 : -, ambil dua operand sebelumnya A dan /B *CD, sehingga
prefixnya adalah –A/B*CD.
Source Code:
#include <iostream>
#define MAXSTACK 100
using namespace std;
int main()
{
int pil;
Stack tumpukan;
itemType data;
init(&tumpukan);
do
{
cout<<"Selamat datang di Aplikasi stack"<<endl;
cout<<"1. PUSH(Memasukan)"<<endl;
cout<<"2. POP(Mengangkat/Memanggil)"<<endl;
cout<<"3. Display(Menampilkan)"<<endl;
cout<<"4. Delete(Hapus)"<<endl;
cout<<"5. Exit"<<endl;
cout<<"Masukkan pilihan : ";cin>>pil;
cout<<"----------------------------------------------
----"<<endl;
switch(pil)
{
case 1:
cout<<"Masukkan data : ";cin>>data;
cout<<"----------------------------------------
----------"<<endl;
isi(data,&tumpukan);
break;
case 2:
ambil(&tumpukan,&data);
break;
case 3:
tampil(&tumpukan);
break;
case 4:
hapus(&tumpukan);
break;
}
}
while(pil!=5);
cout<<" Terima Kasih"<<endl;
cout<<"--------------------------------------------------
"<<endl;
return 0;
}
Tampilan:
Tugas :
Buatlah Program Stack untuk membalik sebuah kalimat seperti tambilan berikut
ini :