• Tidak ada hasil yang ditemukan

Algoritma dan Struktur Data. Queue

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma dan Struktur Data. Queue"

Copied!
52
0
0

Teks penuh

(1)

Queue

Teknik Informatika Universitas Muhammadiyah Malang 2016

(2)

Tujuan Instruksional

• Mahasiswa mampu :

– Memahami struktur data queue

– Memahami cara pengoperasian struktur data queue

– Mengimplementasikan struktur data queue dengan array dan linked list

(3)

Pengertian

• Queue (antrian) adalah struktur data dimana

proses pengambilan dan penambahan

element dilakukan pada ujung yang berbeda.

• Queue mengikuti konsep FIFO.

• FIFO (First In First Out) : elemen yang pertama

masuk akan menjadi elemen yang pertama

(4)

Enqueue dan Dequeue

1. Enqueue

proses penambahan element pada queue. 2. Dequeue

proses pengambilan element pada queue.

Penambahan dilakukan pada bagian belakang. Sedangkan pengambilan dilakukan pada bagian depan (element yang pertama masuk).

Queue

(5)

Front dan Rear

• Front : pointer bantu yang digunakan untuk

menunjuk element yang paling depan.

• Rear : pointer bantu yang digunakan untuk

menunjuk element yang paling belakang.

Queue

Enqueue Rear

Dequeue Front

(6)
(7)

Operasi pada Queue

1. Deklarasi

2. Inisialisasi

3. Cek kosong

4. Cek penuh

5. Penambahan

6. Pengambilan

7. Pengaksesan

(8)

(1) Deklarasi

• Proses yang harus dilakukan pertama kali adalah deklarasi/menyiapkan tempat.

• Langkah yang harus dilakukan adalah :

– Deklarasi class

– Deklarasi struktur data (menggunakan array atau linked list)

– Deklarasi pointer front dan rear

– Deklarasi variabel size untuk menyimpan besar array.

– Deklarasi variabel jumlah untuk mengetahui banyak item yang disimpan pada queue.

(9)

Deklarasi Queue dengan Array

1. Pembuatan class contoh :

2. Pembuatan variabel front dan rear:

int front, rear;

3. Pembuatan variabel size :

int array_size;

(mendeklarasikan variabel bernama array_size dengan tipe integer)

4. Pembuatan variabel Array :

int antrian[];(deklarasi variabel array bernama antrian)

5. Pembuatan variabel jumlah:

(10)
(11)

Deklarasi Queue dengan Linked-list

1. Pembuatan class queue contoh :

2. Pembuatan class Node

3. Pembuatan variabel head, tail, front dan rear bertipe Node. Ketiga variabel ini dideklarasikan pada class queue

(12)
(13)
(14)

(2) Inisialisasi

• Merupakan proses pemberian nilai awal.

• Pada Array :

1. Pembentukan obyek array beserta ukurannya.

antrian= new int[10];

(pembentukan obyek array yang memiliki 10 element, dan alamat obyek akan disimpan pada variabel bernama antrian)

2. Pemberian nilai awal pada variabel front=0 dan belakang=-1.

front = 0;

(15)
(16)

(2) Inisialisasi...(lanjutan)

• Pada Linked List:

Proses inisialisasi dilakukan dengan

memberikan nilai awal pada variabel head, tail

front dan rear dengan nilai null.

(17)
(18)

(3) Cek Kosong

• Operasi yang digunakan untuk mengecek kondisi queue dalam keadaan kosong.

• Pada array : menggunakan pengecekan pada variabel jumlah_item. Jika nilainya = 0 berarti queue dalam kondisi kosong.

• Pada linked list : dapat menggunakan pengecekan front atau rear jika nilainya null berarti queue

kosong.

• Operasi ini harus dapat mengembalikan nilai true jika queu kosong dan false jika sebaliknya.

(19)
(20)
(21)

(4) Cek Penuh

• Operasi yang hanya dapat diterapkan pada queue yang menggunakan array.

• Operasi ini digunakan untuk mengecek kondisi queue dalam keadaan penuh.

• Caranya : melihat nilai pada variabel jumlah item. Jika nilainya = size-1 (dimana size adalah ukuran

array) maka dapat diindikasikan queue dalam kondisi penuh.

• Operasi ini harus dapat mengembalikan nilai true jika queue penuh dan false jika sebaliknya.

(22)
(23)

(5) Operasi Dequeue

• Dequeue adalah proses pengambilan data pada queue.

• Ketika dequeue terjadi, element pada queue akan berkurang, yaitu element yang pertama kali

ditambahkan.

• Pada Array : akan terjadi pergeseran data dari belakang ke depan. Rear berkurang 1.

• Pada linked list : front akan menunjuk pada node yang ditunjuk oleh head setelah operasi remove.

(24)

(5) Operasi POP...(lanjutan)

• Langkah-langkah :

1. Pengecekan queue dalam kondisi kosong dengan memanggil method isEmpty().

2. Data dari element yang diambil akan menjadi return value (nilai yang dikembalikan)

(25)
(26)
(27)
(28)

(6) Operasi Enqueue

• Enqueue adalah proses penambahan element pada queue.

• Ketika enqueue terjadi, element pada queue akan bertambah 1.

• Posisi pointer rear akan bergeser menunjuk pada element baru yang ditambahkan.

– Pada array : rear akan di-increment.

– Pada linked list : rear akan menunjuk ke node baru yang ditunjuk oleh tail.

(29)

(6) Operasi Enqueue...(lanjutan)

• Langkah-langkah :

1. Penambahan element baru pada bagian belakang queue.

2. Perubahan posisi rear.

• Khusus untuk array, terlebih dahulu harus dicek kondisi queue penuh dengan memanggil method isFull(). Jika nilai yang dikembalikan true maka bisa ditampilkan pesan kesalahan atau dilakukan resizing array.

(30)
(31)
(32)
(33)
(34)

(7) Operasi peek

• Peek pada queue adalah proses pengaksesan

element yang ditunjuk oleh front (yaitu

element yang pertama kali ditambahkan).

• Operasi ini berbeda dengan enqueue karena

tidak disertai dengan penghapusan data yang

ada hanya pengaksesan (pengembalian data

saja).

(35)
(36)
(37)

Contoh Penerapan Queue

• mailbox dalam komunikasi antar proses

• simulasi dan modeling (misalnya simulasi

sistem pengendali lalu lintas udara) dalam

memprediksi performansi

(38)

QUEUE DENGAN CIRCULAR

ARRAY

(39)

Circular Array

• Mampu melakukan proses penghapusan

elemen tanda melakukan pergeseran.

(40)

Aturan Circular Array

1. Proses penghapusan dilakukan dengan cara nilai depan (front) ditambah 1 : depan=depan + 1.

2. Proses penambahan elemen sama dengan queue linear array yaitu nilai belakang ditambah 1 : belakang=belakang + 1.

3. Jika depan = maks dan ada elemen yang akan dihapus, maka nilai depan = 1.

4. Jika belakang = maks dan depan tidak 1 maka jika ada elemen yang akan ditambahkan, nilai belakang=1.

5. Jika hanya tinggal 1 elemen di queue (depan = belakang), dan akan dihapus maka depan diisi 0 dan belakang diisi dengan 0 (queue kosong).

(41)
(42)
(43)
(44)
(45)

Inisialisasi Awal

class CircularQueue {

private int maxSize; private int[] queArray; private int front;

private int rear; private int nItems;

(46)

Constructor

public CircularQueue(int s) {

maxSize = s;

queArray = new int[maxSize]; front = 0;

rear = -1; nItems = 0; }

(47)

Method isEmpty()

public boolean isEmpty() {

return (nItems==0); }

(48)

Method peekFront

()

public int peekFront()

{

return queArray[front];

}

(49)

Method insert()

public void insert(int j) { if(rear == maxSize-1) rear = -1; queArray[++rear] = j; nItems++; }

(50)

Method remove()

public int remove() {

int temp = queArray[front++]; if(front == maxSize)

front = 0; nItems--;

return temp; }

(51)

Method main()

public static void main(String[] args) {

CircularQueue theQueue = new CircularQueue(5); // queue holds 5 items System.out.println("front : " + theQueue.front + "rear : " + theQueue.rear);

theQueue.insert(10); theQueue.insert(20);

theQueue.insert(30); theQueue.insert(40);

theQueue.remove();

System.out.println(“remove 1x, front : " +theQueue.front +" rear : " +theQueue.rear); theQueue.insert(50);

theQueue.insert(60);

System.out.println("add 2 elemen, front : " +theQueue.front+"rear:”+theQueue.rear); theQueue.remove();

System.out.println(“remove 1x, front : " +theQueue.front+ “rear : " +theQueue.rear); while( !theQueue.isEmpty() ) { int n = theQueue.remove(); System.out.print(n); System.out.print(" "); }

(52)

Pustaka

• Sartaj Sahni, Presentation L5 & L10

• Jokonowo, Bambang S.Si, “Pemrograman Berorientasi Obyek”, Pusat pengembangan bahan ajar UMB, 2006.

• Noviyanto, “Pemrograman Berorientasi Obyek (PBO) – Array”,

2005

• Nugroho, Adi, “Algoritma dan Struktur Data Dalam Bahasa

Java”, ANDI Yogyakarta, 2008.

• Michaell Waite, ”Data Structures and Algorithms in Java”, SAMS, 2001

Referensi

Dokumen terkait

Fungsi deletenode( ) akan menghapus node pada posisi curr jika linked list tidak kosong dan memindahkan pointer curr ke posisi node pertama, atau curr bernilai NULL apabila linked

Otitis media akut dapat dise#a#kan invasi virus Campak ke dalam telin$a ten$a!% Gendan$ telin$a #iasana !peremia pada fase prodormal dan stadium erupsi% 4ika terjadi invasi

Namun secara umum apabila efektivitas kinerja tersebut dikaitkan dengan kegiatan pelayanan jasa, suatu kinerja layanan akan dikatakan efektif jika pelanggan merasa puas

Kita seyogyanya tak perlu merasa rendah diri dengan kemampuan matahari, bulan, angin, laut, maupun setan yang dalam beberapa bidang melangkahi kesanggupan manusia,

Dengan mengikuti training SW 03, Anda diharapkan dapat menggunakan software AnswerTree yang memiliki berbagai metode analisis untuk melakukan prediksi

Perilaku api yang dihasilkan dari proses pembakaran yang dilakukan pada area pengamatan di hutan Sekunder Haurbentes, Jasinga Jawa Barat sangat mempengaruhi kondisi fauna

• Berdasarkan hasil perhitungan diketahui bahwa nilai koefisien model regresi berganda pada Contoh Kasus 3.2 adalah β0=9.4401, β1=0.6426 dan β3=0.2190.. Seperti halnya

Sex rasio jantan dan betina pada populasi rusa timor di TN Alas Purwo juga tergolong normal dimana jantan lebih banyak dari betina dengan perbandingan 1:4 pada kelas