Anda di halaman 1dari 10

Nama : Michel Setyawan Mulyono

NIM : 18.N1.0018
Prodi : Sistem Informasi

LINKED LIST
A. Pengertian Linked List
Sama halnya dengan array, linked list merupakan struktur data linear. Linked list
adalah salah satu cara untuk menyimpan sekumpulan elemen. Masing-masing
elemen dalam linked list tersebut disimpan dalam bentuk sebuah node. Setiap node
akan menunjuk/terhubung pada node lainnya melaui sebuah pointer.
 Node

Gabungan dua sub elemen/komponen, yaitu :


a. Data : Bagian yang menyimpan elemen
b. Next : Bagian yang menyimpan link ke node selanjutnya

B. Perbedaan Linked List dengan Array

LINKED LIST ARRAY


Data di dalam linked list dibentuk secara Data di dalam array dibentuk secara
dinamis statis
Ukuran data pada linked list belum Ukuran data pada array sudah diketahui
diketahui pada saat program dijalankan
Cara akses ke masing-masing class data Cara akses bersifat random dengan
dilakukan secara sequential (selalu menggunakan nomor indeks
dimulai dari elemen pertama), tidak
menggunakan indeks
Menggunakan variabel pointer sebagai Tidak menggunakan variabel pointer
petunjuk lokasi memori suatu data
Penambahan/penghapusan data tidak Penambahan/penghapusan data terbatas
terbatas
C. Ilustrasi Linked List

Linked list terbentuk saat terdapat banyak node yang saling bertautan dan
membentuk sebuah rantai. Setiap node menunjuk pada node selanjutnya sesuai
dengan urutan. Rangkaian linked list diawali dengan sebuah HEAD untuk menyimpan
alamat awal dan diakhiri dengan node yang akan menunjuk ke NULL.

D. Jenis linked list


Terdapat 2 jenis linked list, yaitu
1. Single Linked List

Merupakan suatu linked list yang hanya memiliki satu variabel pointer saja
(next), di mana pointer tersebut menunjuk ke node selanjutnya.
2. Double Linked List

Merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer
next yang menunjuk ke node selanjutnya dan pointer prev yang menunjuk ke
node sebelumnya.

E. Method dalam Class Single or Double Linked List


1. Boolean isempty
Untuk mengecek apakah linked list dalam keadaan kosong atau tidak
2. Void insert
Untuk menginsert/memasukkan data
3. Void findlist
Untuk menemukan data pada list
4. Void insertafter
Untuk memasukkan/menyisipkan data setelah indeks tertentu
5. Void insertbefore
Untuk memasukkan/menyisipkan data sebelum indeks tertentu
6. Void del_linked
Untuk menghapus data pada indeks tertentu
7. Void delete
Untuk menghapus sebuah data yang telah dimasukkan tepat sebelumnya
8. Void display
Untuk menampilkan isi yang ada pada linked list

1. PROGRAM SINGLE LINKED LIST DENGAN JAVA

Source Code
class Node {
int data;
Node next;

public Node(int data){


this.data = data;
}

public void tampil(){


System.out.print("{"+data+"}");
}
}
public class Single_linkedlist {
Node first ;

public Single_linkedlist(){
first = null;
}

public boolean isEmpty(){


return (first==null);
}

public void addFirst(int data){


Node node = new Node(data);
node.next = first;
first = node;
System.out.println("Angka "+data+" masuk ke linked list");
}

public void addLast(int data){


Node node, help;
node = new Node(data);
node.next = null;

if(isEmpty()){
first = node;
first.next = null;
}else{
help = first;
while(help.next!=null){
help=help.next;
}
help.next=node;
}
System.out.println("Angka "+data+" masuk ke linked list");
}

public Node deleteFirst(){


if(!isEmpty()){
Node temp = first;
first = first.next;
return temp;
}else{
return null;
}
}

public Node deleteLast(){


if(!isEmpty()){
Node temp, current;
current=first;
while(current.next.next != null){
current=current.next;
}
temp=current.next;
current.next=null;
return temp;
}else{
Node temp = first;
first = null;
return temp;
}
}

public void display(){


Node current = first;
if(current == null){
System.out.println("Empty");
}else{
while(current != null){
current.tampil();
current = current.next;
}
System.out.println();
}
}
public static void main(String[] args) {

Single_linkedlist u = new Single_linkedlist();


u.addFirst(2);
u.addFirst(1);
u.addLast(3);
u.addLast(4);
u.addLast(5);
u.addLast(6);
u.display();
u.deleteLast();
u.display();

}
}
2. PROGRAM DOUBLE LINKED LIST DENGAN JAVA

Source Code
class Node {
int data;
Node next;
Node prev;

public Node(int data){


this.data = data;
}

public void tampil(){


System.out.print("{"+data+"}");
}
}
public class Double_linkedlist {
Node first;
Node last;

public Double_linkedlist() {
first = null;
last = null;
}

public boolean isEmpty(){


return (first==null);
}

public void insertFirst(int data){

Node node = new Node(data);


if(isEmpty()){
last = node;
}else{
first.prev = node;
}

node.next = first;
first = node;
System.out.println("Angka "+data+" masuk ke Linked list");
}

public void insertLast(int data){


Node node = new Node(data);
if( isEmpty() )
first = node;
else{
last.next = node;
node.prev = last;
}
last = node;
System.out.println("Angka "+data+" masuk ke Linked list");
}

public Node deleteFirst(){


Node temp = first;
if(first.next == null)
last = null;
else
first.next.prev = null;
first = first.next;
return temp;
}

public Node deleteLast(){


Node temp = last;
if(first.next == null)
first = null;
else
last.prev.next = null;
last = last.prev;
return temp;
}

public boolean insertAfter(int key, int data){


Node current = first;
while(current.data != key){
current = current.next;
if(current == null)
return false;
}
Node node = new Node(data);

if(current==last){
node.next = null;
last = node;
}else{
node.next = current.next;

current.next.prev = node;
}
node.prev = current;
current.next = node;
return true;
}

public Node deleteKey(int key){


Node current = first;
while(current.data != key){
current = current.next;
if(current == null)
return null;
}
if(current==first)
first = current.next;
else
current.prev.next = current.next;
if(current==last)
last = current.prev;
else
current.next.prev = current.prev;
return current;
}

public void displayForward(){


System.out.print("LinkedList (pertama-->terakhir): ");
Node current = first;

while(current != null){
current.tampil();
current = current.next;
}
System.out.println("");
}

public void displayBackward(){


System.out.print("LinkedList (terakhir-->pertama): ");
Node current = last;
while(current != null){
current.tampil();
current = current.prev;
}
System.out.println("");
}

public static void main(String[] args) {


Double_linkedlist o = new Double_linkedlist();
o.insertFirst(3);
o.insertFirst(2);
o.insertFirst(1);
o.insertLast(4);
o.insertLast(5);
o.insertLast(6);
o.displayForward();
o.displayBackward();
o.deleteFirst();
o.deleteLast();
o.deleteKey(3);
o.deleteKey(4);
o.displayForward();
o.insertAfter(2, 100);
o.insertAfter(5, 200);
o.displayForward();
}
}

Anda mungkin juga menyukai