Sabtu, 11 Mei 2013

Antrian (Queue) dalam java

05.53

Share it Please

Antrian (Queue) merupakan representasi data yang hanya memperbolehkan pengaksesan data pada dua ujung. Penyisipan data dilakukan dibelakan (ekor) dan pengeluaran data dilakukan diujung (kepala). Berbeda dengan double lingked list pada praktikum 5 yang diperbolehkan mengakses data di sembarang tempat. Perilaku seperti ini meniru kejadian pada masalah antrian pada dunia nyata yakni yang pertama masuk dialah yang dilayani duluan (FIFO). :


Dua operasi pada antrian yakni enQueue dan deQueue.  Untuk  menyisipkan data pada antrian menggunakan enQueue dan menghapus data dari antrian menggunakan deQueue.

ADT Antrian
Dari ilustrasi gambar di atas ADT antrian dapat direpresentasikan sebagai berikut
                                          

Node                                              
Object data
Node next
Node(Object)
Node(Object,Node)
Object getObject()
Node getNext()
List
Node nodeAwal, nodeAkhir;
String nama;
public List()
public List( String namaList )     
public void sisipDiAwal(Object dt)     
public void sisipDiAkhir(Object dt)     
public Object hapusDrDepan()
public boolean kosong()                 
public void cetak()

 








Queue
List listAntrian
Queue()
enqueue(Object object)    
Object dequeue()    
boolean kosong()   
public void cetak()


Contoh Program Antrian :

Program Latihan Praktikum 8.1
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;}
}

Program Latihan Praktikum 8.2
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" );
      }
}

Program Latihan Praktikum 8.3
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();
              }
     }   
 }

Screenshot Program :




Semoga bermanfaat. :)

5 komentar:

  1. Kak kalo sistem antrian untuk terhubung ke mysql nya gmna ya kak? Sya lg buat sistem antrian klinik.tapi datanya tdak bisa msuk teruske tabel di db nya . Kira2 bagaimana ya ka? Tapi di jtabelnya muncul.

    BalasHapus