Program Double Stack


DOUBLE STACK




Hallo guys..
Kali ini gua mau sharing materi Double Stack.
Apasih Double Stack ? Double Stack adalah stack seperti biasa yang menggunakan array dan memiliki prinsip LIFO (last in first out).

Namun di dalam double stack bisa melakukan push dari array terkecil dan terbesar.
Dari pada bingung langsung saja ke programnya.


#include <iostream>
using namespace std;
#define max 5

int top1=-1,top2=max+1;

struct nilai
{
    int nilai;
} data[5];

bool kosong1()
{
    return (top1+1==0) ? 1 : 0;
}
bool kosong2()
{
    return (top2-1 == max) ? 1 : 0;
}
bool penuh()
{
    return (top1+1==top2-1) ? 1 : 0;
}

void push(int pilih)
{
    if(penuh())
    {
        cout<<"stack penuh";
    }
    else
    {
        if(pilih==1)
        {
            top1++;
            cout<<"masukkan data : ";
            cin>>data[top1].nilai;
        }
        else if(pilih==2)
        {
            top2--;
            cout<<"masukkan data : ";
            cin>>data[top2].nilai;
        }
    }
}


void dell(int pilih)
{


    if(pilih==1)
    {
        if(kosong1())
        {
            cout<<"stack kosong\n";
        }
        else
        {
            cout<<"data yang dihapus : "<<data[top1].nilai<<endl;
            top1--;
        }
    }
    else if(pilih==2)
    {
        if(kosong2())
        {
            cout<<"stack kosong\n";
        }
        else
        {
            cout<<"data yang dihapus : "<<data[top2].nilai<<endl;
            top2++;
        }
    }

}


view()
{
    cout<<"stack kiri\n";
    for(int x=0; x<=top1; x++)
    {
        cout<<data[x].nilai<<" |";
    }
    cout<<endl;
    cout<<"stack kanan\n";
    for(int y=max; y>=top2; y--)
    {
        cout<<data[y].nilai<<" |";
    }
    cout<<endl;
}

main()
{
    int pilih,pilih_stack;
    do
    {
        cout<<"\n------------\n";
        cout<<"1. push\n";
        cout<<"2. dell\n";
        cout<<"3. view\n";
        cout<<" pilih : ";
        cin>>pilih;
        switch(pilih)
        {
        case 1:
        {
            cout<<" input stack kiri atau stack kanan ? ";
            cin>>pilih_stack;
            push(pilih_stack);
            break;
        }
        case 2:
        {

            cout<<" delete stack kiri atau stack kanan ? ";
            cin>>pilih_stack;
            dell(pilih_stack);
            break;

        }
        case 3:
        {
            view();
            break;
        }
        }
    }
    while(pilih<4);
}

-TERIMA KASIH-

Comments

Post a Comment

Popular posts from this blog

Program Perpustakaan Sederhana C++

Cara Membuat Pola Perkalian Menurun pada C++

Cara Membuat Pola Huruf Berurutan Dalam C++