๐Ÿ–ฅ๏ธ
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 Pecobaan
  • Verifikasi Hasil
  • Pertanyaan
  1. Struktur Data Linier
  2. Job Sheet 7: Single Linked List

Praktikum 1

Pembuatan Single Linked List

Deskripsi

Didalam praktikum ini, kita akan mempraktikkan bagaimana membuat Single Linked List dengan representasi data berupa Node, pengaksesan linked list dan metode penambahan data.

Langkah Pecobaan

  • Buatlah proyek dengan nama P9SingleLinkedList .

  • Buatlah kelas-kelas berikut,

    • Node.java

    • SingleLinkedList.java

    • SLLMain.java

  • Implementasikan Node.java dengan kode berikut,

public class Node {
    int data;
    Node next;

    public Node(int nilai, Node berikutnya) {
        this.data = nilai;
        this.next=berikutnya;
    }
}
  • Tambahkan atribut seperti potongan kode berikut pada class SingleLinkedList.

public class SingleLinkedList {
    Node head;
    Node tail;
  • Tambahkan method isEmpty()

public boolean isEmpty() {
    return head == null;
}
  • Implementasikan fungsi print(). Fungsi print() akan mengimplementasikan konsep traverse pada linked list.

public void print() {
    if(!isEmpty()) {
        Node tmp = head;
        System.out.print("Isi Linked List:\t");
        while(tmp != null) {
            System.out.print(tmp.data + "\t");
            tmp = tmp.next;
        }
        System.out.println("");
    } else {
        System.out.println("Linked List Kosong!");
    }
}
  • Implementasi method addFirst().

public void addFirst(int input) {
    Node ndInput = new Node(input, null);
    if(isEmpty()) {
        head = ndInput;
        tail = ndInput;
    } else {
        ndInput.next = head;
        head = ndInput;
    }
}
  • Implementasi method addLast().

public void addLast(int input) {
    Node ndInput = new Node(input, null);
    if(isEmpty()) {
        head = ndInput;
        tail = ndInput;
    } else {
        tail.next = ndInput;
        tail = ndInput;
    }
}
  • Implementasi method insertAfter() untuk memasukkan node yang memiliki data input pada posisi setelah node yang memiliki data key.

public void insertAfter(int key, int input) {
    Node ndInput = new Node(input, null);
    Node temp = head;
    do {
        if(temp.data == key) {
            ndInput.next = temp.next;
            temp.next = ndInput;
            if(ndInput.next == null) tail = ndInput;
            break;
        }
        temp = temp.next;
    } while(temp != null);
}
  • Tambahkan method insertAt() untuk nemabah data pada posisi tertentu berdasarkan indeks.

public void insertAt(int index, int input) {
    if(index < 0) {
        System.out.println("Indeks salah!");
    } else if(index == 0) {
        addFirst(input);
    } else {
        Node temp = head;
        for(int i = 0; i < index - 1; i++) {
            if(temp.next == null) break;
            temp = temp.next;
        }
        temp.next = new Node(input, temp.next);
        if(temp.next.next == null) tail = temp.next;
    }
}
  • Pada kelas SLLMain, buatkan fungsi main kemudian lakukan instantiasi obyek SingleLinkedList.

public class SLLmain {
    public static void main(String[] args) {
        SingleLinkedList sll = new SingleLinkedList();
  • Lakukan penambahan data dengan method-method yang dimiliki oleh objek sll.

sll.print();
sll.addFirst(890);
sll.print();
sll.addLast(760);
sll.print();
sll.addFirst(700);
sll.print();
sll.insertAfter(700, 999);
sll.print();
sll.insertAt(3, 833);
sll.print();
  • Jalankan main method dan verifikasi hasilnya.

Verifikasi Hasil

Cocokkan hasil compile kode program anda dengan gambar berikut ini.

Pertanyaan

  • Mengapa hasil compile kode program di baris pertama menghasilkan โ€œLinked List Kosongโ€

  • Pada fungsi insertAfter(), jelaskan kegunaan kode berikut,

ndInput.next = temp.next;
temp.next = ndInput;
  • Perhatikan class SingleLinkedList, pada method insertAt. Jelaskan kegunaan kode berikut,

if(temp.next.next == null) tail = temp.next;
PreviousJob Sheet 7: Single Linked ListNextPraktikum 2

Last updated 1 year ago

๐Ÿ“ˆ
๐Ÿ”—
๐Ÿ“‚
Hasil Praktikum 1