Monday, December 10, 2012

PROGRAM ANTIRAN (QUEUE)


Struktur Data Antrean (Queueadalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (Insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi Belakang (Rear) dan operasi penghapusan (Deletion) hanya diperbolehkan pada sisi lainnya yang disebut sisi Depan (Front) dari List.
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


Contoh program :

#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();
}

1 comments:

  1. Kaftar Situs Judi Online Resmi | Situs Agen Judi Online ミスティーノ ミスティーノ starvegad starvegad gioco digitale gioco digitale 841Best Prediction Site for Both Team to Score & Live Score

    ReplyDelete