๐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.javadengan 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- posisisetelah 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