🖥️
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 Praktikum
  • Pertanyaan
  1. Struktur Data Linier
  2. Job Sheet 8: Doubly Linked List

Praktikum 2

PreviousPraktikum 1NextPraktikum 3

Last updated 1 year ago

Deskripsi

Pada praktikum 2 ini akan dibuat beberapa method untuk menghapus isi linked list pada class DoublyLinkedList. Penghapusan dilakukan dalam tiga cara di bagian paling depan, paling belakang, dan sesuai indeks yang ditentukan pada struktur data linked list. Method tambahan tersebut akan ditambahkan sesuai pada diagram class berikut,

Langkah Percobaan

  • Buatlah method removeFirst() di dalam class DoublyLinkedList.

public void removeFirst() throws Exception {
    if (isEmpty()) {
        throw new Exception("Linked List masih kosong, tidak dapat dihapus!");
    } else if (size == 1) {
        removeLast();
    } else {
        head = head.next;
        head.prev = null;
        size--;
    }
}
  • Tambahkan method removeLast() yang masih belum dibuat pada tahap sebelumnya.

public void removeLast() throws Exception {
    if (isEmpty()) {
        throw new Exception("Linked List masih kosong, tidak dapat dihapus!");
    } else if (head.next == null) {
        head = null;
        size--;
        return;
    }
    Node current = head;
    while (current.next.next != null) {
        current = current.next;
    }
    current.next = null;
    size--;
}
  • Terakhir, tambahkan method remove() pada kelas DoublyLinkedList.

public void remove(int index) throws Exception {
    if (isEmpty() || index >= size) {
        throw new Exception("Nilai indeks di luar batas");
    } else if (index == 0) {
        removeFirst();
    } else {
        Node current = head;
        int i = 0;
        while (i < index) {
            current = current.next;
            i++;
        }
        if (current.next == null) {
            current.prev.next = null;
        } else if (current.prev == null) {
            current = current.next;
            current.prev = null;
            head = current;
        } else {
            current.prev.next = current.next;
            current.next.prev = current.prev;
        }
        size--;
    }
}
  • Selanjutnya, untuk menguji method remove yang telah Anda buat, tambahkan beberapa kode berikut pada main class.

dll.addLast(50);
dll.addLast(40);
dll.addLast(10);
dll.addLast(20);
dll.print();
System.out.println("Size : " + dll.size());
System.out.println("==========================");
dll.removeFirst();
dll.print();
System.out.println("Size : " + dll.size());
System.out.println("==========================");
dll.removeLast();
dll.print();
System.out.println("Size : " + dll.size());
System.out.println("==========================");
dll.remove(1);
dll.print();
System.out.println("Size : " + dll.size());
System.out.println("==========================");

Verifikasi Hasil Praktikum

Jika program berhasil dikompilasi dan dijalankan, maka akan menghasilkan output seperti gambar berikut,

Pertanyaan

  • Apakah maksud statement berikut pada method removeFirst()? head = head.next; head.prev = null;

  • Bagaimana cara mendeteksi posisi data ada pada bagian akhir pada method removeLast()?

  • 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;

  • Jelaskan fungsi kode program berikut ini pada fungsi remove!

    current.prev.next = current.next;
    current.next.prev = current.prev;
📈
➿
📗