• Tidak ada hasil yang ditemukan

Modul 5 Implementasi Queue SDA

N/A
N/A
Protected

Academic year: 2019

Membagikan "Modul 5 Implementasi Queue SDA"

Copied!
6
0
0

Teks penuh

(1)

Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 1 TUJUAN PEMBELAJARAN:

1. Mengimplementasikan struktur data Queue menggunakan array.

2. Mampu mengimplementasikan struktur data Queue dengan Linked List

3. Mampu memanfaatkan struktur data Queue untuk menyelesaikan permasalahan.

PENGANTAR:

Queue

Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat FIFO (first in first out).Operasi-operasi dasar dari sebuah queue adalah :

• Enqueue : proses penambahan elemen di posisi belakang

• Dequeue : proses pengambilan elemen di posisi depan

Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan terhadap sebuah queue yaitu :

• Operasi pemeriksaan queue kosong (fungsi kosong)

• Operasi pemeriksaan queue penuh (fungsi penuh).

• Operasi inisialisasi queue (fungsi inisialisasi)

Representasi antrian secara sekuen relatif lebih sulit dibanding stack. Seperti dijelaskan di atas bahwa antrian juga merupakan satu kumpulan data. Dengan demikian tipe data yang sesuai untuk menyajikan antrian adalah menggunakan array atau linked list.

Implementasi Queue dengan Array

Struktur data queue dapat diimplementasikan dengan menggunakan sebuah array. Pada praktikum kali ini anda diminta untuk mencoba 3 versi implementasi queue, yakni:

• Versi 1: Implementasi queue dengan 1 variabel index, yani back untuk memantain jumlah elemen queue. Setiap ada proses dequeu harus dilakukan penggeseran elemen sebanyak jumlah elemen array-1.

• Versi 2: Implementasi queue dengan 2 variabel index, yakni back untuk memaintain

(2)

MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)

Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 2 • Versi 3: Implementasi queue dengan circular array dengan mengorbankan 1 field

array yang digunakan untuk definisi queue kosong atau queue penuh.

Berikut penjelasan implementasi queue versi 1:

• Elemen Queue disimpan dalam array A

• Variabel back digunakan untuk memantain index setelah elemen queue paling

belakang A[back]

• Elemen paling depan dari queue berada pada index 0 A[0]

• Proses enqueue (penambahan elemen) dilakukan dengan cara memasukkan data

kedalam elemen array index back A[back]=data, dan kemudian menaikkan

nilai back back++;

• Proses dequeue (pengambilan elemen) dilakukan dengan cara mengambil elemen paling depan A[0], kemudian jika ada elemen yang lain lakukan penggeseran kekiri satu langkah dari A[1] sampai dengan A[back].

Terdapat setidaknya 6 method/operasi dalam implementasi versi 1, yakni isEmpty,

isFull, makeEmpty, dequeue, enqueue, dan doubleArray.

LANGKAH PERCOBAAN 1:

Langkah 1 : Definisikan langkah-langkah yang harus dikerjakan dalam setiap operasi yang tersebut diatas.

Langkah 2: Mengkonversi kedalam coding untuk setiap operasinya pada kerangka class di bawah ini.

public class queue_array1<T> {

private T[] A;// tipe elemen queue

private int back;//untuk memaintain index setelah elemen paling blk. private static final int DEFAULT_CAPACITY = 10;//length daripada queue

public queue_array1() {...}//konstruktor untuk menciptakan queue kosong public boolean isEmpty() {...}//memeriksa apakah queue kosong

public boolean isFull() {...}//memeriksa apakah queue penuh public void makeEmpty() {...}//mengosongkan queue

//mengambil 1 elemen dari queue, dan mengembalikan nilai yang diambil public T dequeue() {...}

public void enqueue(T x) {...}//menambah 1 elemen ke dalam queue //mendobel-kan array dan melakukan copy, jika queue penuh

private void doubleArray() {...} }

Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong).

Langkah 3: Simpan implementasi queue yang anda buat dengan nama queue_array1.java

(3)

Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 3 Berikut penjelasan implementasi queue versi 2:

• Elemen Queue disimpan dalam array A

• Variabel back digunakan untuk memantain index setelah elemen queue paling

belakang A[back]

• Variabel front digunakan untuk memantain index elemen queue paling

depan A[front]

• Proses enqueue (penambahan elemen) dilakukan dengan cara memasukkan data

kedalam elemen array index back A[back]=data, dan kemudian menaikkan

nilai back back++;

• Proses dequeue (pengambilan elemen) dilakukan dengan cara mengambil elemen

paling depan A[front], kemudian naikkan nilai variabel front.

Terdapat setidaknya 6 method/operasi dalam implementasi versi 2, yakni isEmpty,

isFull, makeEmpty, dequeue, enqueue, dan doubleArray.

LANGKAH PERCOBAAN 2:

Langkah 1 : Definisikan langkah-langkah yang harus dikerjakan dalam setiap operasi yang tersebut diatas.

Langkah 2: Mengkonversi kedalam coding untuk setiap operasinya pada kerangka class di bawah ini.

public class queue_array2<T> {

private T[] A;// tipe elemen queue

private int back;//untuk memaintain index setelah elemen paling blk. private static final int DEFAULT_CAPACITY = 10;//length daripada queue

public queue_array2() {...}//konstruktor untuk menciptakan queue kosong public boolean isEmpty() {...}//memeriksa apakah queue kosong

public boolean isFull() {...}//memeriksa apakah queue penuh public void makeEmpty() {...}//mengosongkan queue

//mengambil 1 elemen dari queue, dan mengembalikan nilai yang diambil public T dequeue() {...}

public void enqueue(T x) {...}//menambah 1 elemen ke dalam queue //mendobel-kan array dan melakukan copy, jika queue penuh

private void doubleArray() {...} }

Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong).

Langkah 3: Simpan implementasi queue yang anda buat dengan nama queue_array2.java

(4)

MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)

Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 4 Berikut penjelasan implementasi queue versi 3:

• Elemen Queue disimpan dalam array A

• Variabel back digunakan untuk memantain index setelah elemen queue paling

belakang A[back]

• Variabel front digunakan untuk memantain index elemen queue paling

depan A[front]

• Proses enqueue (penambahan elemen) dilakukan dengan cara memasukkan data

kedalam elemen array index back A[back]=data, dan kemudian menaikkan

nilai back back++, apabila nilai back berada diluar panjang array

(>=A.length) dan queue tidak penuh, reset nilai back menjadi 0.

• Proses dequeue (pengambilan elemen) dilakukan dengan cara mengambil elemen

paling depan A[front], kemudian naikkan nilai variabel front, apabila nilai

front berada diluar panjang array (>=A.length), reset nilai front menjadi 0.

• Queue dikatakan penuh apabila front=back-1.

• Queue dikatakan kosong apabila front=back.

Terdapat setidaknya 6 method/operasi dalam implementasi versi 3, yakni isEmpty,

isFull, makeEmpty, dequeue, enqueue, dan doubleArray.

LANGKAH PERCOBAAN 3:

Langkah 1 : Definisikan langkah-langkah yang harus dikerjakan dalam setiap operasi yang tersebut diatas.

Langkah 2: Mengkonversi kedalam coding untuk setiap operasinya pada kerangka class di bawah ini.

public class queue_array3<T> {

private T[] A;// tipe elemen queue

private int back;//untuk memaintain index setelah elemen paling blk. private static final int DEFAULT_CAPACITY = 10;//length daripada queue

public queue_array3() {...}//konstruktor untuk menciptakan queue kosong public boolean isEmpty() {...}//memeriksa apakah queue kosong

public boolean isFull() {...}//memeriksa apakah queue penuh public void makeEmpty() {...}//mengosongkan queue

//mengambil 1 elemen dari queue, dan mengembalikan nilai yang diambil public T dequeue() {...}

public void enqueue(T x) {...}//menambah 1 elemen ke dalam queue //mendobel-kan array dan melakukan copy, jika queue penuh

private void doubleArray() {...} }

Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong).

(5)

Langkah 4: Buat class test untu

• Prosess dequeue dilaku

oleh variabel front).

Gambar 1. Ilus

Dalam gambar1 di atas, terlih yang menunjuk ke data berikut NULL berarti bahwa elemen ter ditunjuk oleh variabel front, se

Setiap elemen dari queue me data, dan sebagian lagi adalah

Terdapat setidaknya 4 method

Langkah 2: Mengkonversi keda bawah ini.

Abdul Aziz, Jurusan Informatika FMIPA U ntuk menguji implementasi queue yang anda bu

an Linked List

at juga diimplementasikan dengan menggun engenai implementasi queue dengan linked list:

riabel reference objek yakni front dan back.

song apabila front=back=null.

akukan dengan cara:

aru N, kemudian masukkan data baru X ke dalam

alam keadaan kosong, atur nilai front=back

idak kosong, tambahkan N dan update nilai bac

ilakukan dengan cara menghapus elemen pert ).

Ilustrasi Implementasi Queue dengan Linked Lis

rlihat bahwa ada 4 buah data. Setiap data me rikutnya, kecuali elemen yang paling belakang m n tersebut tidak menunjuk ke posisi apapun. Elem t, sedangkan elemen paling belakang ditunjuk ole

mempunyai 2 bagian yaitu bagian data yang lah penunjuk ke data berikutnya (next).

thod/operasi dalam implementasi queue dengan

dequeue, enqueue.

ngkah-langkah yang harus dikerjakan dalam se

kedalam coding untuk setiap operasinya pada

PA UNS 2012 5 k oleh variabel back.

yang bernilai dengan

ngan linked list, yakni

setiap operasi yang

(6)

MODUL PRAKTIKUM STRUKTUR DATA & ALGORITMA (SDA)

Abdul Aziz, Jurusan Informatika FMIPA UNS 2012 6

class ListNode<T> {

// Data member

private Object data; //menyimpan data queue

private ListNode next; // Reference ke node berikutnya // Konstruktor, nextNode di set null

ListNode(Object d, ListNode nextNode) {... }

}

public class queue_linkedlist<T> {

private ListNode<T> front;//menunjuk node paling depan private ListNode<T> back;//menunjuk node paling belakang

public queue_linkedlist() {...}//konstruktor

public boolean isEmpty() {...}//memeriksa apakah queue kosong public void makeEmpty() {...}//mengosongkan isi queue

public T dequeue() {...}//mengambil 1 elemen dari queue

public void enqueue(T x) {...}//menambah 1 elemen ke dalam queue }

Anda diminta untuk mengisi kode java untuk setiap konstruktor dan method yang diimplementasikan (kurung yang kosong) sesuai dengan definisi sebelumnya.

Langkah 3: Simpan implementasi queue yang anda buat dengan nama queue_linkedlist.java

Langkah 4: Buat class test untuk menguji implementasi queue yang anda buat.

Referensi

Dokumen terkait

bahwa berdasarkan pertimbangan sebagaimana dimaksud dalam huruf a perlu menetapkan Keputusan Kepala Desa tentang Perubahan Kedua atas Keputusan Kepala Desa Nomor

; Untuk setiap klien beri penilaian atas kemampuan menyebutkan kegiatan harian yang biasa dilakukan, memperagakan salah stau kegiatan, menyusun jadwal kegiatan

(3) Setiap penduduk Orang Asing yang memiliki Izin Tinggal Terbatas sebagaimana dimaksud dalam Pasal 16 ayat (4) atau Pasal 22 ayat (4) yang bepergian tidak membawa

Karyawan yang menilai pelatihan kerja kurang baik, menilai sarana dan metode yang digunakan serta intensitas pelatihan kerja yang diberikan perusahaan kepada

Stabilitas kimia sediaan mikrokapsul ketoprofen dilakukan dengan mengukur kadar senyawa aktif yang masih tersisa pada 9 formula secara spektrofotometri. Secara umum

Turbin Crossflow terdiri dari nosel yang mempunyai penampang berbentuk persegi panjang dengan lengkungan pada bagian penutup atasnya yang berfungsi mengarahkan aliran ke sudu pada

Adapun tujuan penelitian yang dilakukan dalam penyusunan ini adalah untuk menganalisis bahwa audit manajemen atas fungsi keuangan dapat dipergunakan dalam

Hasil penelitian ini menunjukkan dari 176 sampel susu sapi yang didapat dari peternakan yang ada di Surabaya (Kaliwaron, Wonocolo, Platuk), Sidoarjo (Sepanjang Taman)