STACK
- Pengertian Stack
Stack atau tumpukan bisa diartikan sebagai
kumpulan data yang seolah – olah diletakkan di atas data yang lain.
Stack adalah suatu urutan elemen yang elemennya
dapat diambil dan ditambah hanya pada posisi akhir (top) saja
Stact Bersifat LIFO (Last In First Out).
Contoh dalam kehidupan sehari-hari adalah
tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian
paling atas dan jika mengambilnya pun dari bagian paling atas pula.
- OPERASI PADA STACK
a. IsFull
Mengecek
apakah STACK sudah penuh
b. IsEmpty
Mengecek
apakah STACK sudah kosong
c. Push
Menambahkan
data pada STACK pada tumpukan paling
atas
d. Pop
mengambil
data pada STACK pada tumpukan paling
atas
e. Print
mencetak
semua data dalam tumpukan
- INISIALISASI STACK
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah kosong.
Top adalah
suatu variabel penanda
dalam STACK yang
menunjukkan elemen teratas Stack
sekarang.
Top
Of Stack akan
selalu bergerak hingga mencapai
MAX of STACK sehingga menyebabkan stack penuh.
Ilustrasi stack pada saat inisialisasi
ditunjukkan pada gambar di bawah ini:
- FUNGSI IS FULL
Untuk memeriksa apakah stack sudah penuh, maka dapat
dilakukan dengan cara memeriksa top
of stack jika sudah
sama dengan MAX_STACK-1 maka
full.
Jika belum (masih lebih kecil dari MAX_STACK-1)
maka belum full.
Seperti ditunjukkan gambar di berikut ini:
- FUNGSI PUSH
Untuk memasukkan elemen ke stack, selalu menjadi
elemen teratas stack.
Tambah satu (increment) nilai top of stack terlebih dahulu setiap
kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian
isikan nilai baru
ke stack berdasarkan
indeks top of
stack setelah ditambah satu
(diincrement).
Seperti gambar di berikut ini.
- FUNGSI POP
Untuk mengambil elemen teratas dari stack. Ambil
dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan
nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack
sehingga jumlah elemen stack berkurang.
STACK ada 2 jenis :
a. Single Stack
b. Double Stack
· a. SINGLE STACK
Stack dapat direpresentasikan menggunakan
array satu dimensi.
- Prinsip dan Proses Single Stack
Prinsip proses Single Stack adalah : LIFO (Last
In First Out)
Proses pada Single Stack :
a. AWAL (Inisialisasi)
b. PUSH (Insert, Masuk, Simpan, Tulis)
c. POP (Delete, Keluar, Ambil, Baca/Hapus)
- Kondisi Single Stack
Kondisi Stack ditentukan oleh posisi atau isi
TOP.
- Algoritma PUSH
if (Top
< n-1)
{ Top = Top + 1;
S[Top] = x;
}
else
cout<<“Stack Penuh”;
Algoritma
POP
if (Top
> -1)
{ x = S[Top];
Top = Top - 1;
}
else
cout<<“Stack Kosong”;
· b. DOUBLE STACKDisebut juga stack Ganda
- Prinsip dan Konsep Proses Double Stack
Prinsip proses : LIFO (Last
In First Out) baik untuk Stack1 maupun untuk Stack2
Proses pada Double Stack :
a. AWAL (Inisialisasi)
b. PUSH1 (Push untuk Stack1)
c. POP1 (Pop untuk Stack1)
d. PUSH2 (Push untuk Stack2)
e. POP2 (Pop untuk Stack2)
- Kondisi Double Stack
- Algoritma PUSH1 (Mengisi Stack1)
Periksa apakah Stack1 BISA DIISI
if (Top2 –
Top1 > 1)
{ Top1
= Top1 + 1;
S[Top1] = x;
}
else
cout<<“Stack Penuh”;
- Algoritma POP1 (mengambil isi Stack1)
Periksa apakah Stack1 ADA ISINYA
if (Top1 > -1)
{ x = S[Top1];
Top1 = Top1
- 1;
}
else
cout<<“Stack
Kosong”;
- Algoritma PUSH2 (mengisi Stack2)
Periksa apakah Stack2 BISA DIISI
if (Top2 –
Top1 > 1)
{ Top2 = Top2 - 1;
S[Top2] = x;
}
else
cout<<“Stack Penuh”;
- Algoritma POP2 (mengambil isi Stack2)
Periksa apakah Stack2 ADA ISINYA
if (Top2 < n)
{ x = S[Top2];
Top2 = Top2 + 1;
}
else
cout<<“Stack Kosong”;
- Contoh Program dalam bahasa C++ :
#include <iostream.h>
#include <conio.h>
void main()
{
int nilai [5];
int top, max;
int menu;
top = -1;
max = 4;
home:
clrscr();
cout<<"Pilih salah satu menu ini : "<<endl;
cout<<"----------------------------"<<endl;
cout<<"1. Push"<<endl;
cout<<"2. Pop"<<endl;
cout<<"3. Print"<<endl;
cout<<"4. Clear"<<endl;
cout<<"Pilihan anda (1-4) : "<<endl;
cin>>menu;
switch(menu)
{
case 1:
push:
if (top==max)
{
cout<<"Stack penuh..!";
}
else
{
top++;
cout<<"\nMasukan data ke stack : ";
cin>>nilai[top];
}
getch();
goto home;
break;
case 2:
if(top ==-1)
{
cout<<"Nilai yang di pop..!";
getch();
goto push;
}
else
{
cout<<"Nilai yang di pop : "<<nilai[top];
top--;
}
getch();
goto home;
break;
case 3:
if(top ==-1)
{
cout<<"stack kosong..!";
}
else
{
cout<<"isi stack : ";
for (int i=0; i<=top; i++)
{
cout<<nilai[i]<<" ";
}
}
getch();
goto home;
break;
case 4:
top =-1;
cout<<"Proses clear sukses";
getch();
goto home;
break;
}
getch();
}
- Ini hasil dari contoh coding diatas :
Semoga bermanfaat untuk kita semua :) Sekian dan Terimakasih sampai jumpa dipost selanjutnya :)
Salam STIKOMERS www.stikom-bali.ac.id
Tidak ada komentar:
Posting Komentar