QUEUE (Antrian) adalah list linier yang :
1. dikenali elemen pertama (HEAD) dan elemen terakhirnya
(TAIL),
2. aturan penyisipan dan penghapusan elemennya didefinisikan
sebagai berikut:
- Penyisipan selalu dilakukan setelah elemen terakhir
- Penghapusan selalu dilakukan pada elemen pertama
3. satu elemen dengan yang lain dapat diakses melalui informasi
NEXT
1. dikenali elemen pertama (HEAD) dan elemen terakhirnya
(TAIL),
2. aturan penyisipan dan penghapusan elemennya didefinisikan
sebagai berikut:
- Penyisipan selalu dilakukan setelah elemen terakhir
- Penghapusan selalu dilakukan pada elemen pertama
3. satu elemen dengan yang lain dapat diakses melalui informasi
NEXT
Program menggabungkan 2 Queue menjadi 1:
#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 isi 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 Isi 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 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[6] = {87,73,66,79,87,79};
char y[4] = {72,65,68,73};
cout<<"Antrian I :\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "____________________________________";
cout << endl<<endl;
cout<<"Antrian II : \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();
}
#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 isi 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 Isi 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 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[6] = {87,73,66,79,87,79};
char y[4] = {72,65,68,73};
cout<<"Antrian I :\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "____________________________________";
cout << endl<<endl;
cout<<"Antrian II : \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();
}
Output:
Tidak ada komentar:
Posting Komentar