Prinsip Antrean : FIFO (First In First Out)
Antrean Q = [ Q1, Q2, Q3,……….., QT]
Front(Q) = bagian depan dari antrean Q
Rear(Q) = bagian belakang dari antrean Q
Noel(Q) = Jumlah elemen di dalam antrean ( berharga integer)
Jadi : Front(Q) = QT
Rear(Q) = Q1
Noel(Q) = T
INI CONTOH PROGRAM YANG KAMI DAPAT DI PRAKTIKUM,, HEHEHEH,
#include <iostream.h>
#include <conio.h>
#define maks 14
#define Que1 5
#define Que2 5
class Queue{
friend ostream& operator<<(ostream&, const Queue&);
public:
Queue();
int penuh(int);
int kosong(int);
void cetak();
char enqueue(char);
char dequeue();
void pecah(Queue &, Queue&);
private:
char A[maks];
int banyak;
};
ostream& operator<<(ostream& out, const Queue& s)
{
out << "\n \t isi Dari Queue:";
for (int i=0;i<s.banyak;i++)
out << s.A[i] << " ";
return out;
}
Queue::Queue()
{
banyak=0;
for (int i=0; i<maks; i++)
A[i]='0';
}
int Queue::penuh(int s)
{ return s==maks?1:0;}
int Queue::kosong(int s)
{ return s==0?1:0; }
void Queue::cetak (){
cout<<"\n Queue : ";
for(int i=0;i<banyak;i++)
cout<<A[i]<<" ";
}
char Queue::enqueue(char x)
{
if (penuh(banyak)) cout << "Queue penuh";
else if (A[0]=='0'){
A[0]=x;
banyak++;
}
else{
for (int i=banyak; i>=0; i--)
A[i+1]=A[i];
A[0]=x;
banyak++;
}
return banyak;
}
char Queue::dequeue()
{
char temp=A[--banyak];
A[banyak]='0';
return temp; }
void Queue::pecah(Queue &q1, Queue &q2){
int i;
char a[Que1],b[Que2];
Queue q3;
cout<<"setelah antrian digabung \n";
for (i=0;i<Que1;i++){
a[i] = q1.dequeue();
q3.enqueue(a[i]);
}
for (i=0;i<Que2;i++){
b[i] = q2.dequeue();
q3.enqueue(b[i]);
}
cout<<q3<<endl;
}
int main(){
Queue p,q,r;
char z[5] = {69,68,67,66,65};
char y[5] = {1,2,3,4,5};
cout<<"\t\tAntrian ke satu :\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "+++++++++++++++++++++++++++++++++";
cout << endl<<endl;
cout<<"\t\t Antrian ke dua: \n";
for(int j=Que2-1;j>=0;j--){
q.enqueue(y[j]);
cout << q<<endl;
}
cout << "+++++++++++++++++++++++++++++++++";
cout<<endl<<endl;
r.pecah(p,q);
cout<<endl;
getch();
}
0 comments:
Post a Comment