Anda di halaman 1dari 19

Jurusan Teknologi Informasi

Politeknik Negeri Malang

Tugas Job Sheet VII


SingleLinkedList

10
Hilmy Zaky Mustakim
SIB-2E
27th Oktober, 2023
Daftar Isi

Contents
Daftar Isi ........................................................................................................................... 1

Praktikum 1 ....................................................................................................................... 3

• Code Node.java ....................................................................................................... 3

• Code DoublyLinkedList.java ....................................................................................... 4

• Code DLLMain.java ................................................................................................... 5

PERTANYAAN ................................................................................................................. 5

Praktikum 2 ....................................................................................................................... 7

• Kode DoublyLinkedList.Java ...................................................................................... 7

• Kode DLLMain.java ................................................................................................... 8

Pertanyaan..................................................................................................................... 9

Praktikum 3 ......................................................................................................................10

• Kode DoublyLinkedList.java ......................................................................................10

• Kode DLLMain.java ..................................................................................................11

Pertanyaan .......................................................................................................................12

TUGAS! ............................................................................................................................13

• Kode Node.java.......................................................................................................13

• Kode DoublyLinkedList.java ......................................................................................14

• Kode Main.java .......................................................................................................15

Tugas 2............................................................................................................................16

• Kode Node..............................................................................................................16

• Kode DLL.java.........................................................................................................17

• Kode Film.java ........................................................................................................18

1
• Kode ......................................................................................................................18

2
Praktikum 1
• Code Node.java

3
• Code DoublyLinkedList.java

4
• Code DLLMain.java

PERTANYAAN
1. Jelaskan perbedaan antara single linked list dengan doubly linked lists!
• Single Linked List hanya memiliki 1 buah pointer yaitu next, jadi node hanya akan
menyimpan alamat note selanjutnya saja. Sedangkan untuk Doubly Linked List
memiliki 2 buah pointer yaitu next dan prev, jadi di Doubly Linked List tidak hanya
akan menyimpan alamat selanjutnya tetapi juga menyimpan alamat node
sebelumnya.
2. Perhatikan class Node, di dalamnya terdapat atribut next dan prev. Untuk apakah
atribut tersebut?
• Atribut `next` digunakan untuk menyimpan alamat Node selanjutnya,
sedangkan atribut `prev` digunakan untuk menyimpan Node sebelumnya.

5
3. Perhatikan konstruktor pada class DoublyLinkedList. Apa kegunaan inisialisasi
atribut head dan size?
• Kode dalam konstruktor tersebut digunakan untuk awalan ketika membuat sebuah
Doubly Linked List. Pada saat Node belum diisi sama sekali, nantinya akan Node
bagian `head` akan berisi null yang berarti datanya masih kosong. Sedangkan `size`
digunakan untuk menyimpan panjang jumlah data yang tersimpan didalam Doubly
Linked List.
4. Pada method addFirst(), mengapa dalam pembuatan objek dari konstruktor class
Node prev dianggap sama dengan null?
head = new Node(null, data, null);
• Karena method tersebut akan digunakan untuk menambahkan data pada indeks
pertama atau indeks ke-0. Node prev digunakan untuk menyimpan alamat Node
sebelumnya, jadi ketika ada Node ditambahkan di paling depan, maka `prev`
diinisiasikan `null` karena tidak akan menyimpan alamat dari Node manapun.
5. Perhatikan pada method addFirst(). Apakah arti statement head.prev =
newNode?=
• Kode tersebut memiliki arti yaitu nantinya Node baru akan ditambahkan sebelum
Node head. Jadi Node yang baru ditambahkan ini posisinya akan berada dipaling
depan, dan akan menjadi `head` yang baru.
6. Perhatikan isi method addLast(), apa arti dari pembuatan objek Node dengan
mengisikan parameter prev dengan current, dan next dengan null?
Node newNode = new Node(current, data, null);
• Method tersebut digunakan untuk menambahkan sebuah Node dipoisi paling terakhir
atau indeks terakhir. Paramater `prev` diisikan dengan `current` yang dimana
`current` ini adalah Node sebelumnya. Sedangkan parameter `next` diisikan `null`
karena Node ini adalah Node paling terakhir, jadi pada `next` diisikan `null` karena
tidak akan menyimpan alamat dari Node selanjutnya.
7. Pada method add(), terdapat potongan kode program sebagai berikut. Jelaskan
maksud dari potongan kode tersebut.
if (current.prev == null) {
Node newNode = new Node(null, data, current);
current.prev = newNode;
head = newNode;
}
• Ketika Node sebelum `current` tidak ada isinya atau `null` maka akan menjalankan
perintah didalam percabangan `if`. Didalam percabangan ini akan menambahkan data
pada urutan pertama.

6
Praktikum 2
• Kode DoublyLinkedList.Java

7
• Kode DLLMain.java

8
Pertanyaan
1. Apakah maksud statement berikut pada method removeFirst()?
head = head.next;
head.prev = null;
•Kode tersebut adalah kode yang digunakan untuk menghapus Node pada urutan yang
pertama atau yang ada pada posisi head. Kemudian posisi head akan berubah ke
Node selanjutnya.
2. Bagaimana cara mendeteksi posisi data ada pada bagian akhir pada method
removeLast()?
• Caranya yaitu dengan melakukan pengecekan pada pointer atau nilai yang tersimpan
pada `next`. Jika `next` bernilai null, maka Node tersebut adalah Node bagian
terakhir.
3. Jelaskan alasan mengapa potongan kode program di bawah ini tidak cocok untuk
perintah remove!
Node tmp = head.next;
head.next = tmp.next;
tmp.next.prev = head;
• Tidak cocok karena pada kode tersebut `tmp` akan menyimpan data setelah `head`
yang kemudian `head.next` menyimpan data `tmp.next`. Lalu `tmp.next.prev`
menjadi `head`. Kalau dilihat dari potongan kode tersebut, kode itu lebih cocok untuk
method `removeFirst` atau penghapusan nilai pada Node yang paling awal.
4. Jelaskan fungsi kode program berikut ini pada fungsi remove!
current.prev.next = current.next;
current.next.prev = current.prev;
• Kode tersebut digunakan untuk mengubah nilai dari pointer `next` dan `prev`. Yang
awalnya Node next dari Node sebelumnya adalah Node itu sendiri, diubah menjadi
Node selanjutnya. Sedangkan Node prev dari Node selanjutnya yang awalnya adalah
Node itu sendiri, diubah menjadi Node sebelumnya

9
Praktikum 3
• Kode DoublyLinkedList.java

10
• Kode DLLMain.java

11
Pertanyaan
1. Jelaskan method size() pada class DoublyLinkedList!
• Method `size()` akan mengembalikan suatu nilai yang berisi jumlah dari data
di dalam Doubly Linked List.
2. Jelaskan cara mengatur indeks pada doubly linked lists supaya dapat dimulai dari indeks
ke-1!
• Caranya yaitu melakukan perulangan dengan diinisiasikan indeks yang sama
yaitu 1
3. Jelaskan perbedaan karakteristik fungsi Add pada doubly linked list dan single linked list!
• Pada Doubly Lindked List fungsi Add hanya ada berdarkan indeks tertentu
atau penambahan diakhir atau diawal saja. Sedangkan di Linked List ada
lebih banyak macam fungsi Add seperti insertAt, insertBefore, insertAfter,
addLast, dan addFirst.
4. Jelaskan perbedaan logika dari kedua kode program di bawah ini!
• public boolean isEmpty() {
if(size==0) {
return true;
} else {
return false;
}
}
• public boolean isEmpty() {
return head == null;
}
• Pada kode pertama menggunakan percabangan if-else, ketika kondisi didalam if
terpenuhi yang dimana jika `size` bernilai 0, maka akan mengembalikan nilai `true`,
jika nilai `size` bukan 0 maka akan mengembalikan nilai `false`. Pada kode kedua
digunakan kondisi jika `head` tidak memiliki nilai atau bisa disebut `null` maka akan
itu sama saja dengan `true` dan akan mengembalikan nilai `true`, jika `head`
memiliki nilai atau tidak bersifat `null` maka akan mengembalikan nilai `false`.

12
TUGAS!
• Kode Node.java

13
• Kode DoublyLinkedList.java

14
• Kode Main.java

15
Tugas 2
• Kode Node

16
• Kode DLL.java

17
• Kode Film.java

• Kode

18

Anda mungkin juga menyukai