Double Queue

DOUBLE QUEUE





Hallo guys..
seperti biasa gua mau sharing-sharing materi seputar coding hehe.

Materi kali ini adalah Double Queue.
Double Queue mirip dengan Double Stack Cuma konsepnya yang beda.
Di dalam Double Queue memeliki konsep FIFO (first in first out).

Double Queue yang artinya antrian ganda memiliki 2 cara input yaitu dari head dan tail.
Dari pada bingung kita langsung aja ke programnya.


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

int head_07167=-1,tail_07167=max+1;

struct pembeli_07167
{
    char nama_07167[15];
    char nama_barang_07167[10];
    int jumlah_07167;
    int total_07167;
    int harga_07167;
} beli[5];

bool penuh_07167()
{
    return (head_07167+1==tail_07167-1) ? 1 : 0;
}

bool kosong1_07167()
{
    return (head_07167+1==0 ) ? 1 : 0;
}
bool kosong2_07167()
{
    return (tail_07167-1==max) ? 1 : 0;
}

void input_07167(int pilih)
{

        if(penuh_07167())
        {
            cout<<"queue penuh\n";
        }
        else
       {
           if(pilih==1)
           {

            head_07167++;
            cin.sync();
            cout<<"antrian atas nama ? ";
            cin.getline(beli[head_07167].nama_07167,15);
            cout<<"mau pesan makanan/minuman apa ? ";
            cin.getline(beli[head_07167].nama_barang_07167,10);
            cin.sync();
            cout<<"mau beli berapa ? ";
            cin>>beli[head_07167].jumlah_07167;
            cout<<"mau yang harga berapa ? ";
            cin>>beli[head_07167].harga_07167;
            beli[head_07167].total_07167 = beli[head_07167].jumlah_07167 * beli[head_07167].harga_07167;
           }
           else if(pilih==2)
           {
            tail_07167--;
            cin.sync();
            cout<<"antrian atas nama ? ";
            cin.getline(beli[tail_07167].nama_07167,15);
            cout<<"mau pesan makanan/minuman apa ? ";
            cin.getline(beli[tail_07167].nama_barang_07167,10);
            cin.sync();
            cout<<"mau beli berapa ? ";
            cin>>beli[tail_07167].jumlah_07167;
            cout<<"mau yang harga berapa ? ";
            cin>>beli[tail_07167].harga_07167;
            beli[tail_07167].total_07167 = beli[tail_07167].jumlah_07167 * beli[tail_07167].harga_07167;
           }
    }
}

void dell_07167(int pilih)
{
    switch(pilih)
    {
    case 1:
        if(kosong1_07167())
        {
            cout<<"queue kosong\n";
        }
        else
        {
            cout<<"data yang keluar \n";
            cout<<"-------------------\n";
            cout<<"nama   : "<<beli[0].nama_07167<<endl;
            cout<<"produk : "<<beli[0].nama_barang_07167<<endl;
            cout<<"jumlah : "<<beli[0].jumlah_07167<<endl;
            cout<<"total  : "<<beli[0].total_07167<<endl;
            cout<<"-------------------\n";
            for(int x=0; x<=head_07167; x++)
            {
                beli[x] = beli[x+1];
            }
            head_07167--;
        }
        break;
    case 2:
        if(kosong2_07167())
        {
            cout<<"queue kosong\n";
        }
        else
        {
            cout<<"data yang keluar \n";
            cout<<"-------------------\n";
            cout<<"nama   : "<<beli[max].nama_07167<<endl;
            cout<<"produk : "<<beli[max].nama_barang_07167<<endl;
            cout<<"jumlah : "<<beli[max].jumlah_07167<<endl;
            cout<<"total  : "<<beli[max].total_07167<<endl;
            cout<<"-------------------\n";
            for(int x=max; x>=tail_07167; x--)
            {
                beli[x] = beli[x-1];
            }
            tail_07167++;
        }
        break;
    }
}

void view_07167()
{
        cout<<" DATA DARI HEAD\n";
        for(int x=0;x<=head_07167;x++)
        {
            cout<<"-------------------\n";
            cout<<"nama   : "<<beli[x].nama_07167<<endl;
            cout<<"produk : "<<beli[x].nama_barang_07167<<endl;
            cout<<"jumlah : "<<beli[x].jumlah_07167<<endl;
            cout<<"total  : "<<beli[x].total_07167<<endl;
            cout<<"-------------------\n";
        }
         cout<<" DATA DARI TAIL\n";
        for(int x=max;x>=tail_07167;x--)
        {
            cout<<"-------------------\n";
            cout<<"nama   : "<<beli[x].nama_07167<<endl;
            cout<<"produk : "<<beli[x].nama_barang_07167<<endl;
            cout<<"jumlah : "<<beli[x].jumlah_07167<<endl;
            cout<<"total  : "<<beli[x].total_07167<<endl;
            cout<<"-------------------\n";
        }

}

main()
{
    int pilih_07167,pilih;
    do{
    cout<<"\n1. enqueue\n";
    cout<<"2. dequeue\n";
    cout<<"3. view\n";
    cout<<"4. exit\n";
    cout<<"pilih : ";
    cin>>pilih_07167;

    switch(pilih_07167)
    {
    case 1:
        cout<<"input dari head atau tail ? ";
        cin>>pilih;
        input_07167(pilih);
        break;
    case 2:
        cout<<"hapus data head atau tail ? ";
        cin>>pilih;
        dell_07167(pilih);
        break;
    case 3:
        view_07167();
        break;
    }
    }while(pilih_07167<4);

}

Comments

Popular posts from this blog

Program Perpustakaan Sederhana C++

Cara Membuat Pola Perkalian Menurun pada C++

Cara Membuat Pola Huruf Berurutan Dalam C++