🗂️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 class SingleLinkedList.

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 dengan key 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 fungsi remove()? 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