LAPORAN PRAKTIKUM STRUKTUR DATA
KELAS CP
PERTEMUAN KE – 11
DOUBLE LINKED LIST PADA JAVA
Achmad Teguh Prasetya Wicaksono 221810101094
LABORATORIUM MATEMATIKA FMIPA UNIVERSITAS JEMBER
2024
2 A. TUJUAN
1. Mengerti dan memahami double linked list
2. Mendeklarasikan, menginisialisasi dan mengakses double linked list 3. Membuat program dengan menggunakan double linked list
B. DASAR TEORI
Kata matematika berasal dari perkataan Latin mathematika yang mulanya diambil dari perkataan Yunani mathematike yang berarti mempelajari.
Perkataan itu mempunyai asal katanya mathema yang berarti pengetahuan atau ilmu (knowledge, science). Kata mathematike berhubungan pula dengan kata lainnya yang hampir sama, yaitu mathein atau mathenein yang artinya belajar (berpikir). Jadi, berdasarkan asal katanya, maka perkataan matematika berarti ilmu pengetahuan yang didapat dengan berpikir (bernalar).
Matematika lebih menekankan kegiatan dalam dunia rasio (penalaran), bukan menekankan dari hasil eksperimen atau hasil observasi matematika terbentuk karena pikiran-pikiran manusia, yang berhubungan dengan idea, proses, dan penalaran (Rahmah, 2013).
Java adalah suatu bahasa pemrograman yang diciptakan oleh James Gosling, seorang developer dari Sun Microsystem pada tahun 1991. Java dikembangkan Sun Microsystem dan banyak digunakan untuk menciptakan Executable Content yang dapat didistribusikan melalui network (Asroni dkk, 2020).
Java adalah sebuah bahasa pemrograman Object Oriented dengan unsur-unsur seperti Bahasa C++ dan bahasa-bahasa lainnya yang memiliki libraries yang cocok untuk lingkungan internet. Java dapat digunakan untuk
3
melakukan banyak hal dalam melakukan pemrograman, seperti membuat animasi halaman web, pemrograman Java untuk Ponsel dan aplikasi interaktif.
Java juga dapat digunakan untuk handphone, internet dan lain-lain (Asroni dkk, 2020).
Eclipse IDE adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dijalankan di semua platform (platform independent). Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open sourse, yang berarti setiap orang boleh meihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in (Pinayungan, 2019). Satyaputra dan Sitanorang (2012) mengatakan fasilitas fasilitas Eclipse yang dapat digunakan dalam menulis skrip program java sebagai berikut:
1. Project Explorer
Windows Project Explorer merupakan perangkat yang digunakan untuk melihat seluruh folder dan file yang menjadi bagian dari sebuah project.
Sebuah project Eclipse akan disimpan dalam sebuah folder yang ditempatkan di dalam folder workspace yang didefinisikan pada saat pertama kali menjalankan Eclipse. Salah satu folder dan file project Eclipse yaitu /src yang dimana dalam folder ini terdapat file program Java.
2. Code Editor
Code editor ini berfungsi untuk tempat penulisan kode program Java . Fasilitas ini memunculkan pesan pesan kesalahan jika pada saat penulisan kode program terjadi syntax error, auto list yang muncul dalam penulisan
4
kode program, dan beragam fitur lainnya yang membantu programmer untuk menghasilkan kode program yang benar dari sisi penulisan kode program.
3. Outline Window
Menu ini berisi onjek objek apa saja yang telah ditampilkan dalam sebuah Activity, Sehingga akan memudahkan pengembangan aplikasi untuk melihat dan menginventarisir objek objek yang menjadi bagian dari sebuah aplikasi yang sedang dibangun.
4. Console
Menu ini digunakan untuk melihat jika terjadi kesalahan penulisan kode program syntax error, adanya pesan penting berupa peringatan , pesan error saat running program, dan melihat jalannya suatu program.
Fitria dkk (2017) mengatakan bahwa tipe data adalah suatu keyboard yang secara otomatis datang dari bahasa program. Java dan sama juga dari beberapa bahasa program lannya. Dimana tipe data biasanya digunakan ketika kita menentukan suatu jenis nilai yang dapat ditampung oleh suatu variabel. Tipe data memiliki beberapa kegunaan dalam jenis nilainya sesuai apa nama tipe data tersebut. Adapun perbedaan jenis kelompok tipe data yang harus kita ketahui, yaitu tipe data bilangan bulat (integer), bilangan pecahan (floating point), dan tipe data boolean.
1. Tipe Data Integer (Bilangan Bulat)
Integer merupakan tipe data numerik yang digunakan apabila tidak berurusan dengan pecahan atau bilangan desimal. Bilangan integer juga mengenal nilai positif dan negatif ( signed number ). Tipe data Integer yaitu Byte, Short, Int, dan Long.
2. Tipe Data Floating Point (Bilangan Pecahan)
5
Floating Point digunakan untuk menangani bilangan desimal atau perhitungan yang lebih detail dibanding integer. Ada dua macam floating point yaitu Float dan double. Float adalah Tipe yang digunakan untuk menandakan nilai–nilai yang mengandung presisi atau ketelitan tunggal (single-precision) yang menggunakan ruang penyimpanan 32-bit. Double adalah Tipe yang mengandung tingkat ketelitian ganda atau presisi ganda (double) precisiondan menggunakan ruang penyimpanan 64-bit untuk menyimpan nilai.
3. Tipe Data Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda „ ( petik tunggal ). Char berbeda dengan String, karena String bukan merupakan tipe data primitif, tetapi sudah merupakan sebuah objek.dan char.
Operator merupakan sebuah karakter khusus yang digunakan untuk menghasilkan suatu nilai. Terdapat beberapa jenis seperti operator aritmatika, penugasan, perbandingan, logika, increment-decrement, bitwise, boolean, shift, dan operator kombinasi. Operator yang digunakan untuk memuat program kalkulator sederhana adalah operator aritmatika. Operator aritmatika meliputi penjumlahan ( ), pengurangan ( ), perkalian ( ), pembagian ( ), pangkat ( ), dan modulo ( ) (Warno, 2012).
Double Linked list merupakan sebuah linked list yang mempunyai 2 petunjuk yaitu penunjuk ke simpul sebelumnya dan ke simpul berikutnya.
Beberapa operasi yang dapat dilakukan dalam double linked adalah : 1. Penciptaan
6
Penciptaan adalah suatu memberikan nilai nil variabel pinter awal dan variabel pinter akhir.
2. Penyisipan
a. Penyisipan di awal
Operasi ini berguna untuk menambahkan satu simpul baru di posisi pertama. Langkah pertama untuk penambahan data adalah pembuatan simpul baru dan mengisinya dengan data pada field info-nya. Pointer yang menunjuk ke simpul tersebut dipanggil dengan nama baru.
b. Penyisipan di tengah
Operasi penyisipan data di tengah linked list adalah suatu operasi menambah data di posisi tertentu di dalam linked list. Karena double linked list memiliki dua pointer sambungan, maka penyisip bisa dilakukan sebelum data tertentu atau sesudah data tertentu, berbeda dengan single linked list yang hanya memiliki satu pointer sambungan yaitu sambungan kanan(next).
c. Penyisipan di akhir
Operasi ini berguna untuk menambahkan elemen baru di posisi akhir.
Langkah pertama untuk penambahan data adalah pembuatan elemen baru dan pengisian nilai infonya. Pointer yang menunjuk ke data tersebut dipanggil dengan nama baru
4. Penghapusan
7
Operasi berguna untuk menghapus data yang telah dibuat. Penghapusan ini juga terdapat tiga kondisi yakitu penghapusan di awal, penghapusan di tengah, dan penghapusan di akhir.
5. Penelusuran
Prosesnya secara umum sama seperti penelusuran pada single linked list.
6. Pencarian
Pencarian dilakukan dengan memeriksa data yang ada dalam linked list dengan data yang dicari. Pencarian dilakukan dari data pertama sampai data ditemukan atau pointer pencarian (bantu) telah mencapai akhir dari list yang menandakan bahwa data yang dicari tidak ditemukan.
7. Pengurutan
Proses penyusunan data acak menjadi tersusun baik secara decending pada dasarnya sama seperti pada single linked list, hanya saja pada double linked list dapat dilakukan dari kiri ke kanan atau dari kanan ke kiri dalam menyusurinya.
8. Penghancuran
Proses penghancuran bisa dengan cara memanggil modul penghapusan di awal atau penghapusan di akhir secara terus menerus sampai list kosong, atau dengan proses penghancuran seperti pada single linked list. (Dharmayanti dan Dian, 2011).
8 C. ALAT DAN BAHAN
1. Software Java 2. Eclipse
D. LANGKAH LANGKAH
Penulisan skrip java dapat menggunakan aplikasi Eclipse dengan cara sebagai berikut:
1. Membuat proyek baru untuk membuat kelas yang akan digunakan untuk menulis skrip program pada Java dengan mencari menu File → New → Java Project sehingga memunculkan sebuah jendela untuk membuat Java Project.
Gambar 1. Jendela Create Java Project
9
2. Tuliskan nama proyek sesuai nama praktikum dan ketentuan yang disepakati yaitu “DOUBLE LINKED LIST PADA JAVA SD C”.
3. Setelah proyek Java diberi nama, tekan tombol Finish disebelah bawah jendela Create Java Project sehingga proyek Java muncul pada Project Explore.
Gambar 2. Package Explore
4. Selanjutnya definisikan packages yang berada pada menu File → New → Other → Package sehingga muncul jendela Java Package. Pada Jendela Java Package, definisikan nama package sesuai ketentuan yaitu
“com.praktikum.klscsd” dan tekan finish apabila telah diberi nama.
Gambar 3. Jendela New Package
10
5. Selanjutnya membuat kelas yang berada pada menu File → New → Other
→ Class sehingga muncul jendela Java Class. Pada Jendela Java Class, definisikan nama kelas sesuai ketentuan yaitu “ACHMADT221094P11P1”
yang terhubung dengan kelas “Node” dan kelas “DoubleLinkedList” . Penamaan Class tidak boleh menggunakan spasi apabila diberi jarak maka menggunakan tanda underscore. Centang opsi “public static void main (String[] args) dan tekan finish apabila telah diberi nama.
Gambar 4. Jendela Create Java Class
11
6. Diberikan perintah pada Class yang dibuat dengan menulis perintah seperti gambar berikut:
Gambar 5. Main Skrip Java pada Editor
7. Selanjutnya, kelas baru dibuat untuk menyediakan class Node dan class DoubleLinkedList yang akan diimport pada class sebelumnya dengan mengtik perintah seperti gambar dibawah ini.
12
13
14
Gambar 6. Skrip Java pada Editor (Kelas DoubleLinkedList dan Node)
8. Setelah itu, jalankan skrip yang telah dibuat dengan menekan tombol Run sehingga hasil dari program yang dibuat akan muncul di dalam Console.
Gambar 7. Hasil Program pada Console
15 E. CONTOH PROGRAM
Program sederhana ini dapat dijalankan sehingga menghasilkan sebuah queue. Penulisan skrip Java memiliki beberapa aturan untuk membuat skrip tidak error dalam proses runningnya. Penamaan file harus disamakan dengan penamaan kelas.
Kelas Node juga memiliki beberapa metode untuk menjalankan perintah pada metode main di kelas ACHMADT221094P11P1. Perintah yang terdapat pada kelas ini sebagai berikut.
➢ public berarti fungsi bisa digunakan oleh kelas apa saja dalam proyek yang dibuat.
➢ int data;, berarti mendefinisikan variabel data bertipe integer atau bilangan bulat
➢ Node next; berarti mendefinisikan next, yang menunjuk ke node berikutnya dalam list.
➢ Node prev berarti mendefinisikan prev, yang menunjuk ke node sebelumnya dalam list.
➢ public Node(int data), ini adalah konstruktor kelas Node dengan parameter data yang digunakan untuk menginisialisasi variabel data di
16
dalam node dan terdapat this.data = data; yang berarti data dari parameter disimpan di dalam node yang sedang dibuat.
➢ public void tampil() adalah sebuah metude untuk memunculkan data dalam node
17
18
Kelas DoubleLinkedList juga memiliki beberapa metode untuk menjalankan perintah pada metode main di kelas ACHMADT221094P11P1.
Perintah yang terdapat pada kelas ini sebagai berikut.
➢ public berarti fungsi bisa digunakan oleh kelas apa saja dalam proyek yang dibuat.
➢ Node first; Node last; berati mendefinisikan node pertama (first) dan node terakhir (last) dalam doubly linked list.
➢ public DoubleLinkList(), berarti menginisialisasi awal list dengan first dan last bernilai null, menandakan list kosong.
➢ isEmpty(), berarti mengecek apakah list kosong, dengan memeriksa apakah first == null. Return: true apabila kosong ,sedangkan false jika tidak kosong.
➢ insertFirst(int data), berarti menambahkan node baru diawal list yang dimana terdapat Node node = new Node(data) membuat objek node dari kelas Node. Jika list kosong maka akan menjalankan first = node, jika list tidak kosong maka mengatur referensi next dari last ke node baru dan prev dari node baru ke last. serta memperbarui referensi last ke node baru.
➢ deleteFirst(), berarti menghapus node pertama. Jika list kosong maka akan mereturn nilai null. Program akan menyimpan referensi node pertama ke variabel temp. Jika hanya terdapat satu node, maka last = null akan dijalankan sedangkan jika lebih dari satu node, maka prev dari node kedua menjadi null akan dijalankan serta memperbarui first ke node kedua dan mereturn nilai temp.
19
➢ deleteLast(), berarti menghapus node terakhir. Jika list kosong maka akan mereturn nilai null. Program akan menyimpan referensi node terakhir ke variabel temp. Jika hanya terdapat satu node, maka first = null akan dijalankan sedangkan jika lebih dari satu node, maka next dari node sebelum terakhir menjadi null akan dijalankan serta memperbarui last ke node sebelum terakhir dan mereturn nilai temp.
➢ insertAfter(int key, int data), berarti menambahkan node baru setelah node dengan nilai key yang dimana objek current pada Node didefinisikan first. Jika nilai key tidak ditemukan (current == null), maka akan mereturn false dan bila ditemukan akan dibuat node baru.
Jika current adalah last maka last akan diperbarui ke node baru sedangkan jika current bukan last maka referensi next dan prev dari node yang terhubung akan dijalankan dan mereturn nilai true.
➢ deleteKey(int key), berarti menghapus node dengan nilai key dengan mencari node dengan nilai key. Jika current tidak sama dengan nul dan tidak sama dengan key maka current berpindah. Jika key tidak ditemukan maka mereturn nilai false. Jika current samadengan first, maka first ke node berikutnya diperbarui, sedangkan jika current samadengan last, maka last ke node sebelumnya diperbarui. Referensi next dan prev dari node yang terhubung diperuhi sehingga program akan mereturn node yang dihapus..
➢ displayForward(), berarti menampilkan data dari awal ke akhir yang dimana current didefinisikan dengan first terlebih dahulu. Selama current tidak sama dengan null (berjalan sampai akhir), maka metode tampil akan dijalankan dan current akan berjalan berikutnya (current.next).
20
➢ displayBackward(), berarti menampilkan data dari akhir ke awal yang dimana current didefinisikan dengan last terlebih dahulu. Selama current tidak sama dengan null (berjalan sampai akhir), maka metode tampil akan dijalankan dan current akan berjalan sebelumnya (current.prev).
➢ System.out.println() adalah perintah untuk mencetak teks atau data dalam console Java.
➢ Tanda titik koma harus menjadi akhir dari perintah Java.
Nama kelas yang digunakan pada proyek diatas adalah ACHMADT221094P11P1, maka nama file yang disimpan harus diberi nama ACHMADT221094P11P1.java. Format penulisan nama file, ACHMADT221094P11P1 yang dimana nama editor harus huruf besar yang diikuti NIM awal dan akhir serta P11P1 yang berarti praktikum 11 dan
21
percobaan 1. Kelas ACHMADT221094P11P1 mengimpor kelas DoubleLinkedList dan Node sehingga kelas tersebut dapat berjalan. Sebuah file hanya boleh terdapat satu kelas public.
Kelas ACHMADT221094P11P1 memiliki metoda yaitu main() yang dimana kelas dan obyek mempunyai data dan fungsi sehingga fungsi dapat memanggil fungsi lainnya. Penulisan skrip diatas fungsi main() memanggil fungsi print(). Kelas ini memiliki metode public static void main(String[] args) dan perintah perintah lain yang artinya sebagai berikut.
➢ public berarti fungsi bisa digunakan oleh kelas apa saja dalam proyek yang dibuat.
➢ static berarti fungsi main() dapat diaktikan/dijalankan tanpa membuat objek khusus.
➢ void berarti fungsi main() tidak akan mengembalikan data, karena m main() dipanggil saat program pertama kali dijalankan.
➢ Fungsi main() adalah fungsi utama yang memanggil metoda-metoda lainnya. Pada skrip diatas metoda main() memanggil fungsi print().
➢ String[] args berarti fungsi main() dapat menerima input yang berupa String.
➢ DoubleLinkedList theList = new DoubleLinkedList();berarti membuat objek theList dari kelas DoubleLinkedList.
➢ theList.insertFirst(), berarti objek theList menjalankan metode InsertFirst() untuk menambahkan elemen 22, 44, dan 66 di awal listyang dimana masing masing data ditunjuk first secara berurutan dan bergantian.
22
➢ theList.insertLast(), berarti objek theList menjalankan metode InsertLast() untuk menambahkan elemen 22, 44, dan 66 di akhir list yang dimana masing masing data ditunjuk last secara berurutan dan bergantian.
➢ theList.displayForward(), berarti objek theList menjalankan metode displayForward untuk menampilkan elemen dari awal ke akhir.
➢ theList.displayBackward(), berarti objek theList menjalankan metode displayBackward untuk menampilkan elemen dari akhir ke awal.
➢ theList.deleteFirst(), berarti objek theList menjalankan metode deleteFirst untuk menghapus node pertama (66).
➢ theList.deleteLast(), berarti objek theList menjalankan metode deleteLast untuk menghapus node terakhir (55).
➢ theList.deleteKey(), berarti objek theList menjalankan metode deleteKey untuk menghapus node dengan data (11) dan ditampilkan dari awal ke akhir.
➢ theList.insertAfter(), berarti objek theList menjalankan metode InserAfter() untuk menambahkan elemen 77 setelah 22 dan menambahkan nilai 88 setelah 33 dan ditampilkan dari awal ke akhir.
➢ System.out.println() adalah perintah untuk mencetak teks atau data dalam console Java.
➢ Tanda titik koma harus menjadi akhir dari perintah Java.
Kurung kurawal buka dan kurung kurawal tutup membatasi suatu perintah dalah skrip Java. Java membedakan penulisan menggunakan huruf besar dan huruf kecil (case-sensitive). Apabila sudah menulis skrip Java, skrip java bisa dijalankan dengan menekan tombol running dan hasil dari skrip java dapat dilihat pada console Java.
23 F. TUGAS
1. Buatlah skip java untuk pengurutan data pada double link list dengan Exchange sort.
24
25
26
27 G. PENYELESAIAN KESALAHAN 1. Kesalahan Pertama
Kesalahan diatas adalah kelas DoubleLinkedList tidak terdefinisi sehingga membuat kelas utama tidak bisa menjalankan metode yang didefinisikan.
2. Kesalahan Kedua
Kesalahan diatas adalah kurangnya tanda plus untuk menambahkan elemen mutlak sehingga ketika dijalankan akan error.
28
DAFTAR PUSTAKA
Asroni, A., Jeckson, J., & Basri, H. 2020. Pembuatan aplikasi penjualan buku berbasis java desktop dengan netbeans. Jurnal Ilmiah Teknik Elektro, 1(1), Dharmayanti & Dian .2011. Double Linked List. Bandung : Universitas
Komputer Indonesia
Fitria, R. dkk. 2017. Tipe Data, Variabel, dan Operator. Lhokseumawe: Politeknik Negeri Lhokseumawe.
Pinayungan, E. M. 2019. Sistem Informasi Kost Berbasis Android di Kota Medan. Jurnal Teknik Informatika UNIKA Santo Thomas.
Rahmah, N. 2013. Hakikat pendidikan matematika. Al-Khwarizmi: Jurnal Pendidikan Matematika Dan Ilmu Pengetahuan Alam.
Satyaputra, A. & Aritonang, M. E. 2012. JAVA For Beginners with eclipse 4.2 Juno. Jakarta : PT Elex Media Komputindo.
Simanjuntak, P., E. Elisa, dan H. Pangaribuan. 2020. Pengantar Konsep Struktur Data. Edisi pertama. Padang : Pustaka Galeri Mandiri.
Siswanto .2011. Algoritma dan Struktur Data Non Linear dengan Java. Yogyakarta:
Graha Ilmu
Warno. 2012. Pembelajaran Pemrograman Bahasa Java dan Arti Keyword.
Jurnal Komputer.8(1) : 40-51