Not seeing a Scroll to Top Button? Go to our FAQ page for more info. [C++] Antrian Queue | -

My Imaginations

-
Follow Me

[C++] Antrian Queue



By  Galeh Fatma Eko Ardiansa     Mei 27, 2014     
Assalamu'alaikum...
Saya akan berbagi sedikit materi tentang Queue ( antrian ) pada C++ dan berikut sedikit penjelasannya....
Berbeda dg stack, prinsip yg digunakan dalam antrian adalah FIFO ( First In First Out ). Dengan kata lain, urutan keluar elemen akan sama dengan urutan masuknya.Antrian (Queue) dapat diartikan sebagai suatu kumpulan data yang seolah-olah terlihat seperti ada data yang diletakkan di sebelah data yang lain. semuanya dilakukan secara FIFO murni, contoh yg relevan dalam bidang komputer adalah Time-sharing Computer System, dimana ada sejumlah penakai ( user ) yg menggunakan sistem tsb secara serempak. Karena sistem ini biasanya menggunakan processor, dan sebuah memory utama. Jika processor sedang dipakai oleh seorang user, maka user yang lain harus antri sampai gilirannya.....
contoh programnya : 


#include <iostream>
#include <stdlib.h>
using namespace std;
struct elemen{
int waktu;
string nama;
struct elemen *next;
};
struct queue{
struct elemen *front;
struct elemen *rear;
int count,max;
};
struct queue newQueue()
{
struct queue antrian;
antrian.count = 0;
antrian.front=antrian.rear=NULL;
antrian.max=5;
return antrian;
}
bool isfull(struct queue antrian)
{
return (antrian.max == antrian.count);
}

bool isempty(struct queue antrian)
{
return (antrian.count == 0);
}
void enqueue(struct queue &antrian)
{
if(!isfull(antrian))
{
int wak;
string databaru;
cin.ignore();
cout<<"\nMasukkan nama anda : ";
getline(cin,databaru);
cout<<"\nBerapa menit anda mengantri : ";
cin>>wak;
struct elemen *elemenbaru=new elemen;
elemenbaru->nama=databaru;
elemenbaru->waktu=wak;
elemenbaru->next=NULL;
if(antrian.rear !=NULL){
antrian.rear->next=elemenbaru;
antrian.rear=elemenbaru;
}
else{
antrian.front=antrian.rear=elemenbaru;
}
antrian.count++;
cout<<"\n------Oke silahkan menuju kursi antrian Anda------\n";
}
else cout<<"antrian full"<<endl;
}
void dequeue(struct queue &antrian)
{
if(!isempty(antrian))
{
if(antrian.count==1)
antrian.rear=NULL;
antrian.front=antrian.front->next;
antrian.count--;
}
else 
cout<<"sudah kosong"<<endl;
}
void tampilkan(struct queue antrian){
struct elemen *temp=antrian.front;
while (temp!=NULL){
cout<<"\nNama : "<<temp->nama<<"\tLama Mengantri : ";
cout<<temp->waktu<<" Menit"<<endl;
temp=temp->next;
}
cout<<endl;
}
void jumlahwaktu(struct queue antrian){
int x;
struct elemen *temp=antrian.front;
while (temp!=NULL){
x=x+temp->waktu;
temp=temp->next;
}cout<<"\nAnda Harus Menunggu : "<<x<<" Menit lagi\n";
}

void menu (){
cout<<"==================Menu================\n";
cout<<"\t1. Masukkan data anda\n";
cout<<"\t2. Panggil Antrian\n";
cout<<"\t3. Tampilkan Antrian\n";
cout<<"\t4. Tampilkan total waktu\n";
cout<<"======================================\n";
cout<<"Masukkan Pilihan : ";
}
int main(){
struct queue antrian1 = newQueue();
int m;
do{
system("cls");
menu();
cin>>m;
switch(m){
case 1 :system("cls"); 
enqueue(antrian1);break;
system("pause");
case 2 :system("cls"); 
dequeue(antrian1);
cout<<"\nAntrian yang pertama Sudah Dipanggil.....\n";break;
system("pause");
case 3 :system("cls"); 
tampilkan(antrian1);break;
system("pause");
case 4 :system("cls"); 
jumlahwaktu(antrian1);break;
system("pause");
}system("pause");
}while (m!=0);
}

Semoga bermanfaat....Wassalamu'alaikum....

About Galeh Fatma Eko Ardiansa

If you can dream it, you can do it | Genius is one percent inspiration and ninety-nine percent perspiration | If you don’t make mistakes, you’re not working on hard enough problems | The best and most beautiful things in the world cannot be seen or even touched - they must be felt with the heart | I can't change the direction of the wind, but I can adjust my sails to always reach my destination.

Tidak ada komentar:

Posting Komentar


Formulir Kontak

Nama

Email *

Pesan *

Advertisement

Disqus Shortname