Anda di halaman 1dari 33

STRUKTUR DATA

LINKED LIST
Pertemuan 7
LINEAR LIST (Daftar Linier)
 Daftar linier (Linear List) adalah suatu struktur data umum yang
terbentuk dari barisan hingga (yang terurut) dari satuan data,
atau pun dari record.
 Elemen dari daftar linier disebut simpul atau node.
 Daftar ini disebut linier karena susunan elemennya adalah linier,
yaitu bahwa bagi setiap elemen selalu ada elemen setelah dan
sebelumnya, kecuali pada elemen pertama dan terakhir.

 Banyaknya simpul dalam suatu daftar linier dapat berubah-ubah,


berbeda dengan array yang jumlah elemennya selalu tetap.
Struktur mana yang Linier?
A B C
LINKED LIST (Daftar Berkait)
 Daftar berkait  setiap elemen memiliki pointer
(penunjuk) ke satu atau beberapa elemen lain.
Pointer/Penunjuk = penyimpan alamat
 Singly Linked List atau One-Way List  setiap
elemen memiliki pointer (penunjuk) ke satu
elemen lain, biasanya elemen setelahnya.

 Doubly Linked List  setiap elemen memiliki


pointer (penunjuk) ke 2 elemen lain, biasanya
elemen sebelum dan sesudahnya.
LINKED LIST LAINNYA
START

Daftar Berkait Tunggal Sirkuler (Circular Singly-Linked List)

START

Daftar Berkait Ganda Sirkuler (Circular Doubly-Linked List)


LINKED LIST LAINNYA
List dengan hirarki
START START

ANA ANA ANA ANA


K K K ORT K
U

ANA ANA ANA ANA


K ORT K
K K
U

Struktur Pohon
LINKED LIST LAINNYA
List dengan hirarki

START START

ANAK ANAK
ARA ORTU
UD
SA
A RA
ANAK UD
ANAK ORTU SA
RA A
A DAR
UD U
SA SA
ARA A RA
UD UD
SA SA
Struktur Sisir (??)
Single atau Double Link?
 Perbandingan
Single Link:
- Keuntungan: Hemat memori, sederhana
- Kerugian: Menelusuri list hanya satu arah
Double link:
- Keuntungan: Dapat menelusuri list secara bolak-balik
- Kerugian: Perlu memori lebih, penanganan lebih rumit

 Pertanyaan: Kapan menggunakan struktur yang Single Link (One way)


dan Double Link (Two way)?
Jawaban: Jika proses perlu melakukan banyak kunjungan list dengan arah
fleksibel (bolak-balik) maka sebaiknya gunakan double link agar proses
lebih cepat.
Jika proses hanya melakukan penelusuran satu arah terhadap list,
gunakan single list untuk menghemat memori.
Implementasi Linked-List
dengan Array
 Single link list
Di sebuah RS terdapat 14 kamar. Dokter setiap hari
akan memeriksa mulai dari pasien yg termuda.
START = 4
Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam D A C B F E
a
Usia 2 13 19 15 26 25
4
4
Link 11 9 3 7 0 10

A 9 B 7 C 3 D 11 E 10 F
Penelusuran Linked List
 Penelusuran linked list (daftar berkait) berarti mengunjungi
simpul demi simpul dalam list sampai seluruh simpul
terkunjungi.
Algoritma:

begin
ptr  START
while ptr <> 0 do
Proses INFO(ptr)
ptr  LINK(ptr)
end while
end
Pencarian dalam Linked List
 Pencarian dalam list berarti menelusuri list dan berhenti saat elemen
yang dicari ditemukan atau sampai pada akhir list.
Berikut adalah algoritma pencarian pada list yang tidak terurut.
Algoritma:
begin
ptr  START
while ptr<>0 and ITEMCARI<>INFO(ptr) do
ptr  LINK(ptr)
end while
if ITEMCARI = INFO(ptr) then
Proses INFO(ptr)
else
Tidak ditemukan
endif
end
 Algortima penelusuran yang baik?
Multi List dalam Satu Array
 Beberapa list dapat memanfaatkan array
yang sama.
 Yang perlu dijaga adalah START-nya tidak
mulai dari lokasi yang sama; dan
 LINK ke lokasi berikutnya tidak menunjuk ke
lokasi dalam list lain.
TEST LINK
3 List dalam 1 Array 1 16
2 74 14
3 1

Kimia 11 4 82 0
5 84 12
6 78 0

Matematika 5 7 74 8
8 100 13
9 76 10
10 56 0
Fisika 9 11 88 2
12 62 7
13 74 6
14 93 4
15 0
16 15
Free Storage List
 Free storage list berarti pengelolaan daftar
lokasi memori yang tidak terpakai.
 Lokasi memori yang tidak dipakai
dimungkinkan karena adanya elemen yang
dihapus/keluar dari list.
TEST LINK
1 16
2 74 14
3 1

Algoritma 11 4 82 0
5 84 12
6 78 0

Geometri 5 7 74 8
8 100 13
9 10
10 3
Kosong 9 11 88 2
12 62 7
Lokasi yang tidak 13 74 6
digunakan oleh list lain 14 93 4
digabungkan dalam List 15 0
Kosong/Sampah 16 15
INSERTION
(Penyisipan Simpul)
 Penyisipan simpul berarti menambah suatu
simpul/elemen baru ke dalam sebuah list.

Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam G D A C B F E
a
Usia 21 2 13 19 15 26 25
4
Link 11 9 3 7 0 10
4 G 3

A 9 B 7 C 1 D 11 E 10 F
Kasus Penyisipan Simpul
 INSERT FIRST
Yaitu kasus penyisipan simpul baru pada awal list.
Simpul baru menjadi ujung pertama list.
 INSERT AFTER
Yaitu kasus penyisipan simpul baru setelah sebuah
simpul tertentu.
 INSERT SORT
Yaitu kasus penyisipan simpul baru ke dalam list
sedemikian sehingga simpul-simpul dalam list tetap
dalam keadaan terurut.
Implementasi Linked-List
dengan Array
 Double link list
Di sebuah RS terdapat 14 kamar. Dokter setiap hari
akan memeriksa mulai dari pasien yg termuda.
START = 4
Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam D A C B F E
a
Usia 2 13 19 15 26 25
4
Next 11 9 3 7 0 10
Prev 7 0 9 4 11 3

Next = kamar berikutnya


Prev = kamar sebelumnya
Implementasi Linked-List
dengan Array
 Single link list
Di sebuah RS terdapat 14 kamar. Dokter setiap hari
akan memeriksa mulai dari pasien yg termuda.
START = 4
Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam D A C B F E
a
Usia 2 13 19 15 26 25
4
4
Link 11 9 3 7 0 10

A 9 B 7 C 3 D 11 E 10 F
Implementasi Linked-List dengan Array
 Double link list sirkuler
START = 4
Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam D A C B E
a
Usia 2 13 19 15 25
4
Next 11 9 3 7 4
Prev 7 11 9 4 3

Next = kamar berikutnya; Prev = kamar sebelumnya


START
11 A 9 4 B 7 9 C 3 7 D 11 3 E 4
Implementasi Linked-List dengan Array
 Struktur Pohon (Tree) KANA
INFO KIRI
N
START START 1 E 0 0

A 3 B 0 0

B C 5 A 3 6

6 C 8 1

7
D E
8 D 0 0

Struktur Pohon 9
Implementasi Linked-List dengan Array
 Struktur Sisir (??) INF
OR AK SR
O
START START 1 E 0 0 7

3 B 5 8 6
A
ANAK 4
ORTU
5 A 0 3 0
B RA C
A
A UD
ANAK ORTU S 6 C 0 0 0

7 F 0 0 0
D A E RA
F
AR A 8 D 3 0 1
UD
AUD
SA S
9
Free Storage List
 Free storage list berarti pengelolaan daftar
lokasi memori yang tidak terpakai.
 Lokasi memori yang tidak dipakai
dimungkinkan karena adanya elemen yang
dihapus/keluar dari list.
TEST LINK
1 G 5
2 4
3 B 10

Terisi 3 4 11
5 H 7
6 E 12
7 K 0
Kosong 8
8 13
9 D 6
10 C 9
11 0
12 F 1
Lokasi yang tidak 13 14
digunakan oleh list 14 15
lain digabungkan 15 16
dalam List 16 2

Kosong/Sampah
Proses-Proses terhadap
Linked List
 TRAVERSING (PENELUSURAN)

 INSERTION (PENYISIPAN)

 REMOVE (PENGHAPUSAN)

 SEARCHING (PENCARIAN)
TRAVERSING
Penelusuran terhadap Linked List
 Penelusuran linked list (daftar berkait) berarti mengunjungi
simpul demi simpul dalam list sampai seluruh simpul
terkunjungi.
Algoritma:

begin
ptr  START
while ptr <> 0 do
Proses INFO(ptr)
ptr  LINK(ptr)
end while
end
SEARCHING
Pencarian dalam Linked List
 Pencarian dalam list berarti menelusuri list dan berhenti saat elemen
yang dicari ditemukan atau sampai pada akhir list.
Berikut adalah algoritma pencarian pada list yang tidak terurut.
Algoritma:
begin
ptr  START
while ptr<>0 and ITEMCARI<>INFO(ptr) do
ptr  LINK(ptr)
end while
if ITEMCARI = INFO(ptr) then
Proses INFO(ptr)
else
Tidak ditemukan
endif
end
INSERTION
(Penyisipan Simpul)
 Penyisipan simpul berarti menambah suatu
simpul/elemen baru ke dalam sebuah list.
Kama 1 2 3 4 5 6 7 8 9 10 11 12 13 14
r
Nam G D A C B F E
a
Usia 21 2 13 19 15 26 25
4
Link 11 9 3 7 0 10

4 G 3

A 9 B 7 C 1 D 11 E 10 F
PRIORITY QUEUE with One-
Way List
XXX 2
START

AAA 1 BBB 2 CCC 2

DDD 4 EEE 4 FFF 4

GGG 5 X

Slide Pertemuan ke-7


Kasus Penyisipan Simpul
 INSERT FIRST
Yaitu kasus penyisipan simpul baru pada
awal list. Simpul baru menjadi ujung pertama
list.
 INSERT AFTER
Yaitu kasus penyisipan simpul baru setelah
sebuah simpul tertentu.
Penyisipan dalam List
INSERT FIRST
Sisipkan Elemen Baru ke awal list
Algoritma:
If AVAIL=NULL then
Overflow
Exit
Endif
New  AVAIL
AVAIL  LINK(AVAIL)
INFO(New)  ITEM
LINK(New)  START
START  New
Penyisipan dalam List
INSERT AFTER
Sisipkan Elemen yang ditunjuk oleh ptrY
setelah elemen yg ditunjuk oleh ptrX.
Algoritma:

INFO(ptrY) = ITEM
LINK(ptrY) = LINK(ptrX)
LINK(X) = ptrY

Anda mungkin juga menyukai