Queue (Antrian)

Definisi

Queue (Antrian) adalah list linier yang :
1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail).
2. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut :

– Penyisipan selalu dilakukan setelah elemen terakhir (tail).

– Penghapusan selalu dilakukan pada elemen pertama (head).
3. Satu elemen dengan elemen lain dapat diakses melalui informasi Next.
4. Bersifat FIFO (First In First Out)

Struktur data ini banyak dipakai dalam informatika

misalnya untuk merepresentasi :
1. Antrian job dalam sistem operasi
2. Antrian dalam dunia nyata

Operasi pada Queue

1. isEmpty()

Untuk mengetahui isi queue kosong atau tidak. Mengetahui bahwa Queue kosong atau tidak sangat penting, sebab semua operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Queue.

2. enqueue()

Penambahan selalu dilakukan pada ekor, dan karena alamat ekor diketahui maka

prosesnya sederhana, yaitu hanya addLast.

3. dequeue()

Penghapusan elemen pada queue selalu dilakukan pada elemen pertama, hanya saja perlu diperhitungkan bahwa mungkin queue menjadi kosong akibat terjadinya penghapusan. Jika queue menjadi kosong, maka harga Tail harus diganti. Jika akibat penghapusan queue tidak kosong, maka elemen terakhir tidak berubah.

4. getFront()

Untuk mengetahui isi antrian paling depan.

5. showQueue()

Untuk menampilkan seluruh isi Queue.

Implementasi program Queue (Menggabungkan 2 antrian menjadi 1)

 #include <cstdlib>
#include <iostream>
#include <conio.h>
#define maks 14
#define Que1 5
#define Que2 5

using namespace std;

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){
         cout<<"\nisi 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<<"\nisi 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;
int 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(int argc, char *argv[])
{
    Queue p,q,r;
int z[10]={1,2,3,4,5} ;
int y[10]={6,7,8,9,10} ;
cout<<"Antrian pertama :\n";
for(int i=Que1-1;i>=0;i--){
p.enqueue(z[i]);
cout << p<<endl;
}
cout << "---------------------------------";
cout << endl<<endl;
cout<<"Antrian kedua : \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();
    return EXIT_SUCCESS;
}

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s