Anda di halaman 1dari 60

LINKED LIST

Tinaliah, S.Kom.
Algoritma dan Struktur Data

Created by : Yoannita, S.Kom

LINKED LIST (Senarai Berantai)


Berbeda dengan struktur data array
Struktur Linked List berupa rangkaian
elemen (node) yang saling
terkait/terhubung melalui pointer.

ARRAY VS LINKED LIST


Array

Linked List

Statis
Penambahan /
Penghapusan Data Terbatas
Random Access

Dinamis
Penambahan / Penghapusan
Data Tidak Terbatas
Sequential Access

Istilah-istilah dalam Linked List


1. Simpul
Terdiri dari 2 bagian
1.
2.

Bagian data
Bagian pointer yang menunjukkan ke
simpul yang lain.
1

Istilah-istilah dalam Linked List


2. First
Berisikan pointer menunjuk lokasi simpul
pertama linked list, digunakan sebagai
awal penelusuran linked list.
First

Istilah-istilah dalam Linked List


3. Nil atau Null
Untuk menyatakan tidak mengacu ke
manapun.
4. Simpul Terakhir
Tidak menunjuk ke simpul berikutnya.

Syarat linked list adalah harus dapat


diketahui alamat simpul pertama atau harus
terdapat variabel first.

OPERASI DASAR PADA LINKED LIST


1. Penciptaan dan penghancuran simpul
(BuildNode dan destroyNode)
2. Penyisipan Simpul
a. penyisipan sebagai simpul pertama
(insert first)
b. penyisipan setelah simpul tertentu
(insert after)
c. penyisipan sebagai simpul terakhir
(insert last)
d. penyisipan sebelum simpul tertentu
(insert before)

OPERASI DASAR PADA LINKED LIST


3. Penghapusan Simpul
a. penghapusan simpul pertama (delete first)
b. penghapusan simpul terakhir (delete last)
c. penghapusan setelah simpul tertentu (delete
after)
d. penghapusan simpul tertentu (delete node)

Penelusuran Node Linked List


Kompleksitas pencarian node dalam linked
list adalah linier, krn Node-node dalam
linked list disusun secara acak (tidak
berurut).
Seandainya pun simpul-simpul disusun
secara berurut, metode pencarian biner
(binary search) tetap tidak dapat
dipergunakan.
http://keudekupi.com/index2.php?option=com_content&do_pdf=1&id=46

Penelusuran Node Linked List


Alasan pencarian biner tidak dapat digunakan:
1. Linked list tidak memiliki indeks seperti array
akses langsung ke node tertentu tidak dapat
dilakukan.
Untuk menuju ke node tertentu, proses pemeriksaan
tetap dimulai dari node head (node terdepan). Oleh
karena itu proses pencarian selalu berjalan secara
linier.

2. Tidak dapat membagi linked list menjadi 2


bagian yang sama besar seperti saat membagi
array menjadi 2 bagian bila metode pencarian
biner diaplikasikan pada array terurut.
http://keudekupi.com/index2.php?option=com_content&do_pdf=1&id=46

Penyisipan Simpul
1. Sebagai simpul pertama (Insert

First)

1. Pointer Next elemen baru menunjuk


dulu elemen pertama linked list.
2. fFrst menunjuk ke elemen baru.

Skema Penyisipan Simpul Pertama

(Insert First)

Langkah 1 :
A

First
C

Langkah 2 :
First
A
C

Skema Penyisipan Simpul Pertama

(Insert First)

Langkah 3 :
First
A
C

Langkah 4 :
First
A

ContohTabel Memory (Insert First)


A

First
C

(sebelum penyisipan)
Tabel Memory

First
A

ADD

INFO

LINK

ContohTabel Memory (Insert First)


First
A

(setelah penyisipan)
Tabel Memory
ADD
1

First

INFO LINK
C

Penyisipan Simpul
2. Setelah simpul tertentu (Insert
After)
1. pointer next elemen baru menunjuk dulu
elemen setelah elemen tertentu.
2. pointer elemen next sebelumnya
menunjuk ke elemen baru.

Skema Penyisipan Setelah simpul

tertentu (Insert After)

Langkah 1 :
First
A
C

Langkah 2 :
First
A
C

Skema Penyisipan Setelah simpul

tertentu (Insert After)

Langkah 3 :
First
A
C

Langkah 4 :
First
C

ContohTabel Memory (Insert After)


First
A
C

(sebelum penyisipan)
Tabel Memory
A

First

ADD

INFO

LINK

ContohTabel Memory (Insert After)


First
C

(setelah penyisipan)
Tabel Memory
A

First

ADD

INFO

LINK

Penyisipan Simpul
3. Sebagai simpul terakhir (Insert
Last)
1. telusuri linked list sehingga
mendapatkan elemen last.
2. Lakukan insertAfter setelah elemen last.

Skema Penyisipan simpul terakhir

(Insert Last)

Langkah 1 :
First

A
C

Langkah 2 :
First

A
C

Skema Penyisipan simpul terakhir

(Insert Last)

Langkah 3 :
First

ContohTabel Memory (Insert Last)


First

A
C

(sebelum penyisipan)
Tabel Memory
A

ADD

INFO

LINK

First

ContohTabel Memory (Insert Last)


First
C

(setelah penyisipan)
Tabel Memory
A

ADD

INFO

LINK

First

Penyisipan Simpul
4. Sebelum simpul tertentu (Insert
before)
1. telusuri linked list sehingga mendapatkan
elemen tertentu sekaligus mencatat elemen
sebelum elemen tertentu itu.
2. Lakukan insertAfter.

Skema Penyisipan Sebelum

simpul
tertentu (Insert before)

Langkah 1 :
First

A
C

Langkah 2 :
First
A
C

Skema Penyisipan Sebelum

simpul
tertentu (Insert before)

Langkah 3 :
First
A
C

Langkah 4 :
First
C

ContohTabel Memory (Insert before)


First

A
C

(sebelum penyisipan)
Tabel Memory

First

E
ADD

INFO

PQ

TUV

ZE

BOM

TV

10

11

12

OK

LINK

ContohTabel Memory (Insert before)


First
C

(setelah penyisipan)
Tabel Memory

First

E
ADD

INFO

PQ

TUV

ZE

BOM

TV

10

11

12

OK

LINK

POINTER
Suatu agen penjualan mempunyai 4 orang
sales. Setiap sales memiliki list pelanggan
masing-masing.
Keempat list tersebut digabung menjadi satu
dan diberi nama CUSTOMER.
Nama sales ditempatkan dalam Larik SALES.
LINK adalah penunjuk next pointer.
Larik POINT digunakan sebagai penunjuk
pelanggan pertama.

ADD

CUSTOMER

LINK

VITO

HUNT

14

KAREN

20

BEANS

SONY

16

ROGER

15

AVIRA

10

JONES

19

GRANT

17

11

SALES

POINT

12

NELSON

12

13

KELLY

14

AVAST

TONY

15

WESTON

16

STEVEN

10

EVANS

17

SCOTT

19

ADAM

20

PANDA

18

Penghapusan Simpul
1.

Penghapusan Simpul pertama


(Delete First)

1. telusuri linked list sehingga


mendapatkan elemen pertama
sekaligus mencatat elemen berikutnya.
2. First menunjuk ke elemen baru.

Skema Penyisipan

Delete First

Langkah 1 :
First
C

Langkah 2 :
First

Skema Penyisipan

Delete First

Langkah 3 :
First
D

C
P

Langkah 4 :
First
D

ContohTabel Memory (Delete

First)

First
C

(sebelum penyisipan)
Tabel Memory
ADD

First

INFO

LINK

First

(setelah penyisipan)
Tabel Memory
ADD

INFO

LINK

Penghapusan Simpul
2. Penghapusan setelah simpul
tertentu (Delete After)
1. telusuri linked list sehingga
mendapatkan elemen setelah elemen
tertentu sekaligus mencatat elemen
berikutnya.
2. menghubungkan elemen sebelum
elemen yang dihapus dengan elemen
setelah elemen yang dihapus..

Skema Penyisipan

Delete After

Langkah 1 :
First
C

Langkah 2 :
First
C

Skema Penyisipan

Delete After

Langkah 3 :
First
C

E
P

Langkah 4 :
First
C

Penghapusan Simpul
3. Penghapusan Simpul terakhir
(Delete last)
1. telusuri linked list sehingga
mendapatkan elemen terakhir.
2. elemen sebelum elemen terakhir
menjadi null.

Skema Penyisipan

Delete last

Langkah 1 :
First
C

Langkah 2 :
First

Skema Penyisipan

Delete last

Langkah 3 :

First
C

F
P

Langkah 4 :
First
C

Penghapusan Simpul
4.

Penghapusan Simpul tertentu

(Delete Node)

1. telusuri linked list sehingga mendapatkan


elemen tertentu yang akan dihapuskan.
2. mencatat elemen sebelum elemen tertentu
dan elemen sesudah elemen tertentu.
3. menghubungkan elemen sebelum dengan
elemen setelah elemen tertentu.

Skema Penyisipan

Delete Node

Langkah 1 :
First
C

Langkah 2 :
First
C

PrecP

Skema Penyisipan

Delete Node

Langkah 3 :
First
C

PrecP

Langkah 4 :
First
C

Jenis Linked List


1. Header Linked List
2. Two Way Linked List
3. Two Way Header Linked List
4. One Way Priority Linked List

Header Linked List


Sebuah linked list yang salah satu simpulnya
(node) berisikan catatan khusus dan berada
di awal dari list (daftar).
First
H

Header Linked List


Terdiri dari 2 jenis :

1. Grounded Header Linked List


Header linked list yang simpul terakhirnya berisi
null pointer.
Contoh : Proses AB+C*

2. Circular Header Linked List


Header linked list yang simpul terakhirnya
menunjuk kembali ke simpul awal (node header).

Two Way Linked List


Disebut juga doubly-linked list

Linked list yang setiap simpul dibagi


atas 3 bagian utama.
1. bagian nilai data (info).
2. link ke alamat elemen sebelumnya (back).
3. link ke alamat elemen berikutnya (next).
C

Two Way Linked List


Aturan :
lokasi berikutnya dari simpul A adalah lokasi
simpul B, jika dan hanya jika, lokasi
sebelumnya dari simpul B adalah lokasi
simpul A.

Contoh insert after pada two way linked list


First

First

c
x

First

Contoh delete node pada two way linked


list
First

First

c
x

First

Two Way Header Linked List


Sebuah two way linked list dimana
simpul (node) awalnya berisikan
catatan khusus dan berada di awal
dari list (daftar).
Merupakan gabungan dari two way list dan
circular header linked list.
Intinya First mengarah ke header node, begitu
juga node terakhirnya akan mengarah kembali ke
header nodenya

Two Way Header Linked List


Grounded Two Way Header
Linked List
First

Two Way Header Linked List


Circular Two Way Header Linked
List
First

One Way Priority Linked List

Linked list yang menunjukkan ke


simpul (node) berikutnya

berdasarkan tingkat
prioritasnya.
1. Simpul terdiri atas 3 bagian :

One Way Priority Linked List


2. Jika simpul A memiliki PRN > PRN simpul B,
maka simpul A berada di depan simpul B
3. Jika simpul A memiliki PRN <= PRN simpul B,
maka simpul A berada di belakang simpul B.

One Way Priority Linked List


Penyisipan simpul
ADD

INFO

PRN

LINK

First
C

One Way Priority Linked List


Penghapusan simpul

ADD

INFO

PRN

LINK

First
B

First

ADD

INFO

PRN

LINK

Stack dengan Singly Linked List


Mengimplementasikan stack dengan single linked
list :

Elemen paling atas (TOP stack) disimpan di


simpul pertama dari list

http://ww3.java2.datastructures.net/presentations/Sequences.pdf

Queue Dengan Single Linked List


Mengimplementasikan queue dengan single linked list
:
Elemen front disimpan di simpul awal (first node)
Elemen rear disimpan di simpul terakhir( last node)
r

http://ww3.java2.datastructures.net/presentations/Sequences.pdf

Anda mungkin juga menyukai