Double Stack
Double Stack atau Stack Ganda adalah
dua stack yang berada dalam satu array. Satu array digunakan untuk dua stack
dimana dasar Stack1 berada pada sisi indeks yang
terkecil
dan dasar Stack2 berada pada sisi indeks yang terbesar. Sama halnya dengan
Single Stack, Double Stack juga menerapkan prinsip LIFO (Last in Firt Out).
Pada
gambar 4.4 diatas adalah ilustrasi indeks array pada double stack. Padastack 1
kondisi data pertama yang diinputkan adalah S[0], data kedua S[1], data ketiga
S[2] dan Top=data input terakhir S[2]. Sedangkan pada stack 2 data pertama
adalah S[9], data kedua S[8], data ketiga S[7], data keempat S[6] dan Top=data
input terakhir S[6].
Proses pada Double Stack :
- AWAL (inisialisasi)
- PUSH1 (Push untuk Stack 1)
- POP1 (Pop untuk Stack 1)
- PUSH 2 (Push untuk Stack 2)
- POP 2 (Pop untuk Stack 2)
Operasi Dasar Pada Double Stack
Proses awal adalah proses
menyiapkan indeks penunjuk stack untuk pertama kali. Pada tahap ini ditetapkan
Top1=-1 (sama seperti single stack) dan Top2=banyak jumlah data.
§ Is Empty
Sama dengan single stack, yaitu proses
pengecekan stack dalam kondisi kosong
§ Is Full
Sama dengan single stack, yaitu proses pengecekan
stack dalam kondisi kosong
§ Push (Stack1 dan Stack2)
Proses mengisi
data pada stack1 maupun stack2
§ Pop (Stack1 dan Stack2)
Proses mengambil data pada stack1 maupun stack2
Contoh
Program Double Stack
Program
#include<iostream.h>
#define n 10
int S[n], x,top;
void push(int y)
{
top=top+1;
S[top]=y;
}
int pop()
{
int y;
y=S[top];
top=top-1;
return y;
}
void main()
{
top=-1;
while (top<=n-1)
{
cout<<"Inputkan isi stack : ";
cin>>x;
push(x);
}
cout<<"Isi
stack : "<<endl;
while (top>=0)
{
x=pop();
cout<<x<<" ";
}
}
0 komentar: