Friday 28 February 2014

Pengenalan Struktur Data dan Algoritma (Antrian)

Antrian (queue) adalah struktur data mirip dengan tumpukan, yaitu terdiri dari item dalam urutan tertentu. Antrian memiliki dua ujung, yang disebut ujung depan dan ujung belakang. Item selalu dimasukkan dari belakang antrian, dan selalu dikeluarkan dari depan antrian. Operasi memasukkan dan mengeluarkan item dari dalam antrian disebut "masuk" dan "keluar" (dalam bahasa Inggris disebut enqueue dan dequeue).
Suatu item yang ditambahkan di belakang antrian tidak bisa dihapus sebelum item di depannya dihapus. Mirip seperti antrian pada kasir atau pada customer service di bank misalnya. Customer akan dilayani dalam urutan ketika mereka datang.


Contoh Program Antrian : 
Pertama membuat class Node

pulic class Node {  
   Object data;
       Node next;

   Node( Object object ){this ( object, null );}

   Node( Object object, Node node ){
      data = object;
      next = node;
      }

   Object getObject(){return data;}

      Node getNext() {return next;}
}

Lalu lanjutkan membuat class yang kedua
public class List {
      private Node nodeAwal;
      private Node nodeAkhir;
      private String nama;
 
      public List(){    this( "list" ); }

   public List( String namaList ){
         nama = namaList;
         nodeAwal = nodeAkhir = null;
      }
     
   public void sisipDiAwal( Object dt ){
      if (kosong()) nodeAwal = nodeAkhir = new Node( dt );
      else nodeAwal = new Node( dt, nodeAwal );
      }
     
   public void sisipDiAkhir( Object dt ){
      if (kosong()) nodeAwal = nodeAkhir = new Node( dt );
      else nodeAkhir = nodeAkhir.next = new Node( dt );
   }
     
   public Object hapusDrDepan(){
      Object itemDihapus = null;
      if (!kosong()) {
              itemDihapus = nodeAwal.data;    
             if ( nodeAwal == nodeAkhir )
             nodeAwal = nodeAkhir = null;
             else nodeAwal = nodeAwal.next;    
      }

      return itemDihapus;
   }  

            public boolean kosong(){return nodeAwal == null;}
           
      public void cetak(){
        if ( kosong() ){
           System.out.printf( "Kosong %s\n", nama );
           return;
        }
     
        System.out.printf( "Isi %s adalah : ", nama );
        Node kini = nodeAwal;
     
        while ( kini != null ){
           System.out.printf( "%s ", kini.data );
           kini = kini.next;
        }
     
        System.out.println( "\n" );
      }
}

Terakhir class yang ketiga
public class Queue {
    private List listAntrian;
    public Queue() {
       listAntrian = new List( "queue" );
    }
    
    public void enqueue( Object object ){
       listAntrian.sisipDiAkhir( object );
    }
    
    public Object dequeue(){
       return listAntrian.hapusDrDepan();
    }
    
    public boolean kosong(){
       return listAntrian.kosong();
    }
   
    public void cetak(){listAntrian.cetak();}
   
    public static void main( String args[]){
              Queue q = new Queue();           
              q.enqueue( 10 );
              q.cetak();       
              q.enqueue( 40 ); 
              q.cetak();      
              q.enqueue( 25 ); 
              q.cetak();      
              q.enqueue( 30 ); 
              q.cetak();
           
              Object dtHapus = null;
              while(!q.kosong()){
                     dtHapus = q.dequeue();
                     System.out.printf("%s dihapus \n",dtHapus );
                     q.cetak();
              }
     }   
 }


 
 
Hasil outputnya setelah di compile :


Sumber :http://java.lyracc.com/belajar/java-untuk-pemula/antrian 
                http://aaman-ahmad.blogspot.com/2013/05/antrian-queue-dalam-java.html

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More