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. :)
posing broh
BalasHapusAda yg lebih simpel ga?
BalasHapusaya di www.jav.com hahaha...
Hapuswww.ayoguyu.com
HapusKak 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