🗂️Praktikum 2
Modifikasi Elemen Pada Single Linked List
Deskripsi
Didalam praktikum ini, kita akan mempraktekkan bagaimana mengakses elemen, mendapatkan indeks dan melakukan penghapusan data pada Single Linked List.
Langkah Percobaan
Implementasikan method untuk mengakses data dan indeks pada linked list
Tambahkan method untuk mendapatkan data pada indeks tertentu pada class
SingleLinkedList
.
public int getData(int index) {
Node temp = head;
for(int i = 0; i < index; i++) {
temp = temp.next;
}
return temp.data;
}
Implementasikan method
indexOf()
.
public int indexOf(int key) {
Node temp = head;
int index = 0;
while(temp != null && temp.data != key) {
temp = temp.next;
index++;
}
if(temp == null) {
return -1;
} else {
return index;
}
}
Tambahkan method
removeFirst()
pada classSingleLinkedList
.
public void removeFirst() {
if(isEmpty()) {
System.out.println("Linked List masih kosong, tidak dapat dihapus!");
} else if(head == tail) {
head = tail = null;
} else {
head = head.next;
}
}
Tambahkan method
removeLast()
untuk menghapus data terakhir pada node linked list.
public void removeLast() {
if(isEmpty()) {
System.out.println("Linked List masih kosong, tidak dapat dihapus!");
} else if(head == tail) {
head = tail = null;
} else {
Node temp = head;
while(temp.next != tail) {
temp = temp.next;
}
temp.next = null;
tail = temp;
}
}
Implementasikan method
remove()
untuk menghapus data dengankey
tertentu.
public void remove(int key) {
if(isEmpty()) {
System.out.println("Linked List masih kosong, tidak dapat dihapus!");
} else {
Node temp = head;
while(temp != null) {
if((temp.data == key) && (temp == head)) {
this.removeFirst();
break;
} else if(temp.next.data == key) {
temp.next = temp.next.next;
if(temp.next == null) tail = temp;
break;
}
temp = temp.next;
}
}
}
Implementasikan method
removeAt()
untuk menghapus data dengan indeks tertentu.
public void removeAt(int index) {
if(index < 0) {
System.out.println("Indeks salah!");
} else if(index == 0) {
removeFirst();
} else {
Node temp = head;
for(int i = 0; i < index - 1; i++) {
if(temp.next == null) break;
temp = temp.next;
}
temp.next = temp.next.next;
if(temp.next == null) tail = temp;
}
}
Tambakan kode berikut pada main class untuk mengetahui data dapat diakses serta apakah method pengehapusan dapat berjalan.
System.out.println("Data pada indeks ke-1 = " + sll.getData(1));
System.out.println("Data 3 berada pada indeks ke-" + sll.indexOf(760));
sll.remove(999);
sll.print();
sll.removeAt(0);
sll.print();
sll.removeFirst();
sll.print();
sll.removeLast();
sll.print();
Verifikasi Hasil
Cocokkan hasil compile kode program anda dengan gambar berikut ini,

Pertanyaan
Mengapa digunakan keyword
break
pada fungsiremove()
? Jelaskan!Jelaskan keguaan kode dibawah ini (fungsi
remove()
),
else if(temp.next.data == key) {
temp.next = temp.next.next;
Apa saja nilai kembalian yang dapat dikembalikan pada method
indexOf()
? Jelaskan untuk setiap nilai kembalian.
Last updated