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

Last updated