📂 Praktikum 1Pembuatan 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,
Implementasikan Node.java
dengan kode berikut,
Copy 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
.
Copy public class SingleLinkedList {
Node head;
Node tail;
Tambahkan method isEmpty()
Copy public boolean isEmpty() {
return head == null ;
}
Implementasikan fungsi print()
. Fungsi print()
akan mengimplementasikan konsep traverse pada linked list.
Copy 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()
.
Copy 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()
.
Copy 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
.
Copy 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.
Copy 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
.
Copy public class SLLmain {
public static void main ( String [] args) {
SingleLinkedList sll = new SingleLinkedList() ;
Lakukan penambahan data dengan method-method yang dimiliki oleh objek sll
.
Copy 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,
Copy ndInput . next = temp . next ;
temp . next = ndInput;
Perhatikan class SingleLinkedList
, pada method insertAt
. Jelaskan kegunaan kode berikut,
Copy if ( temp . next . next == null ) tail = temp . next ;