🖥️
JTI - Modul Praktikum: Algoritma dan Struktur Data
  • 👋Selamat Datang!
  • 🔰Refreshment
    • 🔰Job Sheet 1: Objek
    • 🔰Job Sheet 2 - Array of Objects
  • 📚Dasar Struktur Data
    • 📚Job Sheet 3: Brute Force & Divide Conquer
      • 🐣Praktikum 1
      • 🐥Praktikum 2
      • 🐔Tugas Praktikum
  • 🔍Job Sheet 4: Sorting dan Searching
    • 🧮Praktikum 1: Sorting
    • 🔭Praktikum 2: Searching
    • 📚Tugas Praktikum
  • 📈Struktur Data Linier
    • 🧮Job Sheet 5: Stack
      • 👔Praktikum 1
      • ♾️Praktikum 2
      • 📲Tugas Praktikum
    • ⛓️Job Sheet 6: Queue
      • 🧬Praktikum 1
      • 💸Praktikum 2
      • 💷Tugas
    • 🔗Job Sheet 7: Single Linked List
      • 📂Praktikum 1
      • 🗂️Praktikum 2
      • 🗃️Tugas
    • ➿Job Sheet 8: Doubly Linked List
      • 📕Praktikum 1
      • 📗Praktikum 2
      • 📘Praktikum 3
      • ✍️Tugas Praktikum
  • 🎆STRUKTUR DATA NON LINEAR
    • 🌳Job Sheet 9: Tree
      • 🌴Praktikum 1
      • 🎋Praktikum 2
      • 🎄Tugas
    • 🗺️Job Sheet 10: Graf
      • 🛣️Praktikum 1
      • 🛤️Praktikum 2
      • 🏔️Tugas
    • 🌏Job Sheet 11: Hash Table
      • 🌎Praktikum 1
      • 🌍Tugas
    • 🎄Job Sheet 12: Heap
      • 🌿Praktikum 1
      • 🎋Tugas
    • ⛰️Job Sheet 13: Java Collection
      • 🌄Praktikum 1
      • 🏔️Praktikum 2
      • 🗻Praktikum 3
      • 🌏Praktikum 4
      • 🌎Praktikum 5
      • 🌋Tugas Praktikum
  • 🧑‍🏫Kontributor
Powered by GitBook
On this page
  • Deskripsi
  • Langkah Percobaan
  • Verifikasi Hasil
  • Pertanyaan
  1. Struktur Data Linier
  2. Job Sheet 7: Single Linked List

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.

PreviousPraktikum 1NextTugas

Last updated 1 year ago

📈
🔗
🗂️
Hasil Praktikum 2