Stack
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. Pada ganbar di bawah ini bisa kita lihat jika kita ingin mengambil suatu data dari
tumpukan maka kita harus mengambil data paling atas dahulu kemudian selanjutnya data
yang berada di bawahnya dan seterusnya sampai data yang paling bawah yang pertama kali
dimasukan.
Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan
dari stack. Pada ganbar di bawah ini bisa kita lihat jika kita ingin mengambil suatu data dari
tumpukan maka kita harus mengambil data paling atas dahulu kemudian selanjutnya data
yang berada di bawahnya dan seterusnya sampai data yang paling bawah yang pertama kali
dimasukan.
A. Operasi Pada Stack
Di C++, ada dua cara penerapan prinsip stack, yakni dengan array dan linked list. Setidaknya stack haruslah memiliki operasi-operasi sebagai berikut:
- Push: digunakan untuk menambah element pada stack.
Proses menambah element baru ke dalam stack langkah-langkahnya adalah seperti
berikut:
berikut:
1. Cek apakah stack sudah penuh atau belum.
2. Jika stack penuh, maka muncul pesan error dan exit.
3. Jika stack tidak penuh, Tambahkan penanda top(atas) untuk menandai space kosong
selanjutnya.
selanjutnya.
4. Tambah element kedalam stack dimana penanda top berada.
5. Return success.
void push(int data) { if(!isFull()) { top = top + 1; stack[top] = data; } else { printf("Could not insert data, Stack is full.\n"); } } |
-Pop: digunakan untuk mengambil element pada stack.
Proses pengambilan element dari stack langkah-langkahnya adalah seperti berikut:
1. Cek apakah stack kosong
2. Jika stack kosong, muncul pesan error dan exit
3. Jika stack tidak kosong, maka ambil element paling atas yang di tunjuk penanda top
4. Kurangi nilai dari penanda top 1
5. Return success
int pop(int data) { if(!isempty()) { data = stack[top]; top = top - 1; return data; } else { printf("Could not retrieve data, Stack is empty.\n"); } } |
-IsEmpty: Untuk mengecek jika stack kosong
bool isempty() { if(top == -1) return true; else return false; } |
-IsFull: Untuk mengecek jika stack penuh
bool isempty() { if(top == -1) return true; else return false; } |
-Peak: Posisi top sudah ada di batas maksimal atau puncak
int peek() { return stack[top]; } |
Contoh Program
#include <iostream> #include <stdlib.h> #include<cstring> #include<windows.h> using namespace std; struct tumpukan { int top; char tmp[10][10]; } tumpukan; void push (char data[10]); void pop(); void awal(); int isEmpty(); int isFull(); int main() { int pilih; char data[10]; string i; awal(); do { system("cls"); cout<<"==================================="<<endl; cout<<"= CONTOH PROGRAM TUMPUKAN (STACK) ="<<endl; cout<<"==================================="<<endl<<endl; cout<<"=====Program Tumpukan Kijang======="<<endl; cout<<" 1. PUSH ="<<endl; cout<<" 2. POP ="<<endl; cout<<" 3. EXIT ="<<endl; cout<<"==================================="<<endl; if (!isEmpty()) { for(int i=tumpukan.top; i>=0; i--) { cout<<"["<<tumpukan.tmp[i]<<"]"<<endl; } } else { cout<<"[tumpukan kijang dalam kondisi kosong]"; } cout<<"\n Masukan Pilihan :";cin>>pilih; switch (pilih) { case 1: cout<<"Masukan Kijang kedalam tumpukan :";cin>>data; push(data); break; case 2: pop(); break; case 3: cout<<"Tekan enter untuk keluar :"; break; default: cout<<"ERROR!"; break; } } while (pilih!=3); } void push (char data[10]) { if (!isFull()) { tumpukan.top=tumpukan.top+1; strcpy(tumpukan.tmp[tumpukan.top],data); } else cout<<"Kijang dalam tumpukan penuh"; } void pop() { if (!isEmpty()) { tumpukan.top--; cout<<"kijang pada tumpukan ke- "<< tumpukan.top+2<<"sudah diambil"; } else cout<<"Kijang dalam tumpukan kosong"; } void awal() { tumpukan.top= -1; } int isEmpty() { if (tumpukan.top==-1) return 1; else return 0; } int isFull() { if (tumpukan.top==10-1) return 1; else return 0; } |
output : |
Thanks for reading & sharing TeknoBlog
0 comments:
Post a Comment