MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

dokumen-dokumen yang mirip
MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Algoritma dan Struktur Data. Queue

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

ADT Graph. Disusun untuk Memenuhi Laporan Praktikum Algoritma dan Struktur Data. Oleh: NIM : Asisten:

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Algoritma Dan Struktur Data II. Queue

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

ARNA FARIZA YULIANA SETIOWATI

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Struktur Data Array. Rijal Fadilah S.Si

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Struktur Data dan Algoritma

Algoritma Dan Struktur Data II

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

BAB III QUEUE (ANTRIAN)

KUM 5 IMPLEMENTASI QUEUE

Percabangan & Perulangan

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

LAPORAN PRAKTIKUM RESMI QUEUE

Gambar 1. Single Linked List

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

Politeknik Elektronika Negeri Surabaya

Algoritma Pemrograman [BS204]

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Ramos Somya

DIG1G3 Implementasi Struktur Data

Modul Praktikum Algoritma dan Struktur Data

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Operator dan Assignment

IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

Materi 9 : QUEUE (ANTREAN) Dosen:

MODUL PEMROGRAMAN 2. Queue (Antrian)

MODUL IV STACK A. TUJUAN

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

IKI 20100: Struktur Data & Algoritma

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

Grouping Object. Viska Mutiawani, M.Sc

Pemrograman Berbasis Objek Operator dan Assignment

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

KUM 3 IMPLEMENTASI LIST

Algoritma dan Struktur Data GRAF

BAB IV QUEUE ATAU ANTREAN

Modul Praktikum Bahasa Pemrograman 1

Lab. Teknik Informatika Struktur Data 1

Pertemuan 7. REVIEW dan QUIS

Algoritma dan Struktur Data STACK

BAB IV Antrian(Queue)

IKG2I4 / Software Project I

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Gambar 1. Single Linked List

QUEUE (ANTRIAN) Struktur Data - Queue

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Data Structure STRUKTUR DATA QUEUE. Chapter 3. Dahlia Widhyaestoeti, S.Kom

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

C. TUGAS PENDAHULUAN Buatlah resume 1 halaman mengenai Priority Queue dan berikan penjelasannya.!

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Dasar Pemrograman Java

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

QUEUE. Queue adalah suatu linear list di mana operasi DELETE terjadi pada sisi depan (FRONT) dan operasi INSERT terjadi pada sisi belakang (REAR).

BAB 2 LANDASAN TEORI

Lab. Common Computing Universitas Trunojoyo Madura. Praktikum Pengantar Algoritma Pemrograman (ALPRO) [MODUL]

BAB VIII QUEUE (ANTRIAN)

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Modul Praktikum 3 Pemograman Berorientasi Objek

Bahasa Pemrograman Java. Yudi Adha. ST. MMSI

Gambar 1. Single Linked List

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

A. TUJUAN PEMBELAJARAN

MATERI PRAKTIKUM STRUKTUR DATA

STRUKTUR DATA Pertemuan 1 s.d 8

Modul Praktikum 4 Pemograman Berorientasi Objek

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA

BAB V. STATEMEN KONTROL

Gambar 1. Single Linked List

Gambar 1. Ilustrasi Stack

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Politeknik Elektronika Negeri Surabaya

MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

Transkripsi:

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE Deskripsi Singkat merupakan bentuk struktur data seperti antrian yang memiliki konsep First In First Out (FIFO). Bermakna data yang pertama masuk merupakan data yang paling pertama dikeluarkan. memiliki dua pintu. Ada pintu untuk masuk dan ada pintu untuk keluar. Bayangkan seperti anda mengantri membayar di supermarket maka orang yang paling pertama masuk adalah orang yang pertama keluar. Konsep queue tersebut disebut linear queue, namun pemanfaatannya pada struktur array kurang efisien (boros) karena posisi/index data yang dihapus tidak dapat dipakai kembali. Oleh karena itu, konsep tersebut diperbaiki dengan adanya circular queue (antrian melingkar). Circular queue akan kembali memanfaatkan tempat yang ditinggalkan oleh pengantri yang keluar. Tujuan 1. Memahami konsep queue 2. Menggunakan konsep queue pada program sederhana Materi 1 : Membuat Berikut kode program class X yang menggunakan konsep FIFO. Class X ini sudah mengadopsi konsep circular queue bermakna tempat yang kosong sesudah proses hapus dapat dimanfaatkan kembali. Jadi bila antrian sudah sampai pada lokasi terakhir (n-1), antrian akan dilanjutkan ke lokasi 0. Gambar di bawah merupakan ilustrasi circular queue.

public class X private int maxsize; private int[] quearray; private int front; private int rear; private int nitems; public X(int s) // constructor maxsize = s; quearray = new int[maxsize]; front = 0; rear = -1; nitems = 0; // put item at rear of queue public void insert(int j) // deal with wraparound (circular) if(rear == maxsize-1) rear = -1; // increment rear and insert quearray[++rear] = j; nitems++; // one more item // take item from front of queue public int remove() // get value and increment front int temp = quearray[front++]; // deal with wraparound (circular) if(front == maxsize) front = 0; nitems--; // one less item return temp; // peek at front of queue public int peekfront() return quearray[front]; // true if queue is empty public boolean isempty()

return (nitems==0); // true if queue is full public boolean isfull() return (nitems==maxsize); // number of items in queue public int size() return nitems; Operasi utama pada queue adalah insert() dan remove(). Method insert() digunakan untuk memasukkan data ke dalam queue. Sedangkan method remove() digunakan untuk mengeluarkan data yang paling pertama dimasukkan. Selain itu terdapat method tambahan lain yaitu peekfront(), isempty(), isfull(). Method peekfront() digunakan untuk melihat data pada antrian paling depan. Method isempty() digunakan untuk menguji apakah queue kosong atau tidak. Method isfull() digunakan untuk menguji apakah queue sudah penuh atau belum. Implementasi konsep queue pada program di atas menggunakan array. Sehingga pada method constructor melibatkan pemberian nilai awal pada ukuran queue (array), mencipta array dan nilai front serta rear. Nilai front merupakan indeks data yang paling awal masuk. Nilai rear merupakan indeks data yang paling terakhir masuk. Materi 2 : Menggunakan class X Berikutnya kita membuat class sederhana yang akan menggunakan class X yang telah dibuat di atas. public class App public static void main(string[] args) the = new (5); // queue holds 5 items the.insert(10); // insert 4 items the.insert(20); the.insert(30); the.insert(40); the.remove(); // remove 3 items

the.remove(); // (10, 20, 30) the.remove(); the.insert(50); // insert 4 more items the.insert(60); // (wraps/circular around) the.insert(70); the.insert(80); while(!the.isempty() ) // remove and display // all items int n = the.remove(); // (40, 50, 60, 70, 80) System.out.print(n); System.out.print(" "); System.out.println(""); // end main() // end class App Apakah output dari program di atas? Bagaimana tampilan hasilnya jika dibandingkan dengan urutan data yang dimasukkan? Materi 3 : Class X Menggunakan Generic Program queue yang sebelumnya menggunakan array bertipe int. Jika kita ingin menyimpan data char, tinggal mengubah tipe data yang disimpan menjadi char. Namun proses seperti ini sangat membuang waktu karena untuk setiap tipe data memerlukan class tersendiri. Seperti yang telah kita pelajari pada praktikum 3, untuk menyimpan data yang umum, kita dapat memanfaatkan class Object yang dibuat dalam format generic. Berikut ini merupakan contoh program XGeneric yang merupakan queue dalam format generic. public class XGeneric <E> private int maxsize; private E [] quearray; private int front; private int rear; private int nitems; public XGeneric(int s) // constructor // set array size // menggunakan conditional operator // jika true, ukuran queue s, jika tidak diubah menjadi 10 maxsize = s > 0? s : 10; quearray = (E[]) new Object[maxSize]; // create array

front = 0; rear = -1; nitems = 0; // put item at rear of queue public void insert(e j) // deal with wraparound (circular) if(rear == maxsize-1) rear = -1; // increment rear and insert quearray[++rear] = j; nitems++; // one more item // take item from front of queue public E remove() // get value and increment front E temp = quearray[front++]; // deal with wraparound (circular) if(front == maxsize) front = 0; nitems--; // one less item return temp; // peek at front of queue public E peekfront() return quearray[front]; // true if queue is empty public boolean isempty() return (nitems==0); // true if queue is full public boolean isfull() return (nitems==maxsize); // number of items in queue public int size()

return nitems; Berikutnya kita coba gunakan class StackXGeneric seperti contoh berikut. public class TesGeneric public static void main(string[] args) XGeneric <Integer> the = new XGeneric <Integer> (10); // make new queue XGeneric <Character> queuechar = new XGeneric <Character> (10); // make new queue the.insert(20); // insert items into queue the.insert(40); the.insert(60); the.insert(80); while(!the.isempty() ) // until it's empty, // delete item from queue Integer value = the.remove(); System.out.print(value); // display it System.out.print(" "); // end while System.out.println(""); queuechar.insert('<'); // push items onto stack queuechar.insert('a'); queuechar.insert('2'); queuechar.insert('>'); while(!queuechar.isempty() ) // until it's empty, // delete item from queue Character value = queuechar.remove(); System.out.print(value); // display it System.out.print(" "); // end while System.out.println(""); // end main()

Materi 4 : yang Menggunakan Prioritas, PriorityQ Priority queue adalah bentuk struktur data yang mirip seperti queue, yaitu ada front dan rear, and item dikeluarkan dari front. Namun pada priority queue, item disusun berdasarkan nilai kunci. Nilai kunci yang paling kecil (atau bisa juga sebaliknya) selalu berada di depan/front. Item dimasukkan dalam priority queue sehingga tetap dengan urutan yang benar. Pada contoh yang digunakan disini menggunakan array sehingga lebih sederhana. Namun proses insertion menjadi lebih lambat sehingga sesuai untuk jumlah item yang tidak terlalu banyak dan kecepatan proses insert tidak terlalu penting. Ada 2 pilihan implementasi priority queue dengan array, yaitu: 1. Item disusun dalam queue sesuai dengan priority order key nya (kecil ke besar atau besar ke kecil). Bermakna proses insert akan memastikan order yang betul. Sehingga akan melibatkan proses penggeseran. 2. Item disusun seperti queue biasa, yaitu bagian belakang/rear. Proses delete harus sesuai urutan order yang betul. Sehingga akan melibatkan proses pencarian dan penggeseran. Contoh PriorityQ berikut ini menggunakan cara yang pertama. Class berikut ini sudah langsung memasukkan method main untuk testing. public class PriorityQ // array in sorted order, from max at 0 to min at size-1 private int maxsize; private double[] quearray; private int nitems; //------------------------------------------------------------- public PriorityQ(int s) // constructor maxsize = s; quearray = new double[maxsize]; nitems = 0; public void insert(double item) // insert item int j; if(nitems==0) // if no items, quearray[nitems++] = item; // insert at 0 else // if any items, for(j=nitems-1; j>=0; j--) // start at end,

if( item > quearray[j] ) // if new item larger, quearray[j+1] = quearray[j]; // shift upward else // if smaller, break; // done shifting // end for quearray[j+1] = item; // insert it nitems++; // end else (nitems > 0) // end insert() public double remove() // remove minimum item return quearray[--nitems]; public double peekmin() // peek at minimum item return quearray[nitems-1]; public boolean isempty() // true if queue is empty return (nitems==0); public boolean isfull() // true if queue is full return (nitems == maxsize); public static void main(string[] args) throws IOException PriorityQ thepq = new PriorityQ(5); thepq.insert(30); thepq.insert(50); thepq.insert(10); thepq.insert(40); thepq.insert(20); while(!thepq.isempty() ) double item = thepq.remove(); System.out.print(item + " "); // 10, 20, 30, 40, 50 // end while System.out.println(""); // end main() Perhatikan output yang dihasilkan pada program di atas. Apa yang dapat anda simpulkan?

LATIHAN 1 Buat semua class-class yang ada dalam praktikum ini. Apakah yang dapat anda simpulkan? SOAL-SOAL 1.