Double Stack   Double Stack atau Stack Ganda adalah dua stack yang berada dalam satu array. Satu array digunakan untuk dua stack dima...

Double Stack



 
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).



Gambar 4.4 Ilustrasi double stack

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)

                Prinsip pada Double Stack yaitu LIFO (Last In First Out) baik untuk Stack1 dan Stack2

 

Operasi Dasar Pada Double Stack


                   §  Inisialisasi

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: