Senin, 12 Desember 2011


#include <iostream.h>
#include <conio.h>
#define maks 14
#define Que1 6
#define Que2 4

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 Antrian : ";
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 Antrian : ";
for(int i=0;i<banyak;i++)
cout<<A[i]<<" ";
}

char Queue::enqueue(char x)
{
if (penuh(banyak)) cout << "Anyrian 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 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;

cout << "===================================";
}

int main(){
Queue p,q,r;
char z[7] = {80,81,82,83,84,85};
char y[4] = {76,77,78,79};
cout<<"ANTRIAN 1 : P Q R S T U\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "===================================";
cout << endl<<endl;              
cout<<"ANTRIAN 2 : L M N O \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();
}