Double Queue
DOUBLE
QUEUE
Hallo guys..
seperti biasa gua mau sharing-sharing materi seputar coding hehe.
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
Post a Comment