Queue (Antrian)
package antrian;
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;}
}
class List {
private Node nodeAwal;
private Node nodeAkhir;
private String nama;
private int counter;
public List(){ this( "list" ); }
public List( String namaList ){
nama = namaList;
nodeAwal = nodeAkhir = null;
counter= -1;
}
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" );
}
}
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();
}
}
}
Tidak ada komentar:
Posting Komentar