Queque (Antrian) bersifat abstrak dan dikenal dengan istilah konsep
FIFO (First In First Out). Konsep tersebut berarti bahwa item data yang pertama
kali masuk kedalam antrian / queue maka item data tersebutlah yang akan
dikelurakan pertama kali. Dan sebaliknya jika sebuah item data masuk ke dalam antrian
yang terakhir kali, maka item tersebut akan keluar juga paling akhir. Operasi
Dasar :
n Enqueue
Memasukkan item ke dalam queue.
n Dequeue
Mengeluarkan item dari queue.
n Is_Full
Mengecek apakah queue penuh.
n Is_Empty
Mengecek apakah queue kosong.
n Initialize
Membuat queue untuk pertama kali.
SourceCode :
/*
* To change this
template, choose Tools | Templates
* and open the
template in the editor.
*/
/**
*
* @authortoshiba
*/
import java.util.Scanner;
public class MenuQLL {
public static void
main(String args[])
{
Scanner sc =
new Scanner (System.in);
System.out.print("Berapa data yang akan dimasukkan:");
int max =
sc.nextInt();
QueueLinkList
queue = new QueueLinkList(max);
int pilihan=0;
while(pilihan
!= 3)
{
System.out.println("Menu");
System.out.print("1.insert\n2.remove\n3.exit\npilihan Anda:");
pilihan =
sc.nextInt();
switch
(pilihan)
{
case 1
: System.out.println("insert queue:");
System.out.print("Masukkan
data:");
int temp;
temp = sc.nextInt();
queue.enqueue(temp);
queue.display();
break;
case 2
: System.out.println("remove queue:");
queue.dequeue();
queue.display();
break;
case 3
: System.out.println("exit");
}}}}
class item //atau node/simpul
{
public
int data; // data item
public
item next; // next node link in list
public
item prev; // previous node link in list
public
item(int id) // constructor
{
data
= id; // initialize data
} // set
to null)
public
void displayLink() // display ourself
{
System.out.print("{"
+ data + "} ");
}
} // end class Link
class QueueLinkList
{
private
item front; // ref to first link on list
private
item rear; // ref to last link on list
int jumlah;
int max;
public
QueueLinkList(int m ) // constructor
{
max = m;
jumlah =
0;
front =
rear = null; // no items on list yet
}
public
boolean isEmpty() // true if list is empty
{
return
(front==null);
}
public
void enqueue(int id) //node baru
selalu di top // void hanya sesuai prosedur hanya langkah2 dan untuk dirinya
sendiri
{ //
make new link
item
newitem = new item(id);
if (jumlah
< max)
{
if
(front == null) // the
first node created
{
front
= rear = newitem; // first --> newLink
newitem.next = front;
newitem.prev = front;
}
else // the second node and the next node
{
rear.next
= newitem; //next dr top (awal)
diarahkan ke node baru
newitem.prev
= rear; //prev dr node baru diarahkan
ke tail (awal)
newitem.next = front; //buat
circular
front.prev = newitem;
rear
= newitem; //top
(baru) diarahkan ke node baru
//newitem.next
= null;
}
jumlah++;
}
else
{
System.out.println("Kapasitas penuh. Terjadi pergesaran
item");
front=front.next;
front.prev=newitem;
newitem.next=front;
rear.next=newitem;
newitem.prev=rear;
rear=newitem;
}
}
public
item dequeue() // delete first item
{ item temp = null;
if
(front == null) // queue is
empty
System.out.println("Queue
is empty");
else
if (front == rear) //
queue is only one data
{
temp
= front;
front
= rear = null;
jumlah--;
}
else // queue has more than one data
{
temp = front; //
save reference to link
front
= front.next; // delete it: first-->old next
rear.next = front;
front.prev = rear;
jumlah--;
//front.prev
= null;
}
return
temp;
}
public
void display()
{
item
current = front; // start from the first data
//item
stop = front;
if
(current == null) //queue kosong
System.out.println("The
Queue is empty");
else
if (current.next == front) //node hanya 1
{
current.displayLink();
}
else
//if (current.next != front)
{
for(;current.next != front;) // until end of list,
{
current.displayLink();
// print data
current
= current.next; // move to next link
}
current.displayLink();
}System.out.println("");
}
} // end class LinkListOutputnya :
Tidak ada komentar:
Posting Komentar