Sabtu, 14 Januari 2012

Stuktur Data : Menggabungkan 2 Queen menjadi 1 !


Definisi Queue
Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi-operasi sebagai berikut :
  • EnQueue Memasukkan data ke dalam antrian
  • DeQueue Mengeluarkan data terdepan dari antrian
  • Clear Menghapus seluruh antrian
  • IsEmpty Memeriksa apakah antrian kosong
  • IsFull Memeriksa apakah antrian penuh
Berikut ini adalah Implementasi Dalam C++
cekidot ^^
#include <iostream.h>
#include <conio.h>
#define maks 10

class queue{
      friend ostream& operator<<(ostream&, const queue&);
public:
       queue();
       int penuh(int);
       int kosong(int);
       void cetak();
       char enqueue(char);
       char dequeue();
       void bagi(queue &, queue&);
private:
        char A[maks];
        int banyak;};

ostream& operator<<(ostream& out, const queue& s){
         out<<"\nIsi 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<<"\nIsi Antrian : ";
     for(int i=0;i<banyak;i++)
     cout<<A[i]<<" ";}

char queue::enqueue(char x){
     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++;}}

char queue::dequeue(){
     char temp=A[--banyak];
     A[banyak]='0';
     return temp; }

void queue::bagi(queue &q1, queue &q2){
     char a[5],b[5];
     queue q3;
     cout<<"\n\nAntrian Gabungan";
     for(int i=0;i<5;i++){
     a[i]=q1.dequeue();
     q3.enqueue(a[i]);}
     for(int i=0;i<5;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] = {74,73,72,71,70};
cout<<"Antrian Pertama";
for(int i=5-1;i>=0;i--){
p.enqueue(z[i]);
cout<<p;}
cout<<"\n\nAntrian Kedua";
for(int j=5-1;j>=0;j--){
q.enqueue(y[j]);
cout<<q;}
r.bagi(p,q);
getch();
return 0;}

Tidak ada komentar:

Posting Komentar