๐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()
. Fungsiprint()
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 padaposisi
setelah node yang memiliki datakey
.
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 obyekSingleLinkedList
.
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 methodinsertAt
. Jelaskan kegunaan kode berikut,
if(temp.next.next == null) tail = temp.next;
Last updated