&
Linked List
Pemakaian larik tidak selalu tepat untuk
program-program terapan yang kebutuhan
pengingatnya selalu bertambah selama eksekusi
program tersebut.
Untuk mengatasi hal tersebut dibutuhkan sebuah tipe data
yang sifatnya adalah dinamis yaitu penggunaan memori
dilakukan sesuai dengan kebutuhan dan akan dibebaskan
jika sudah selesai walapun pada saat itu program masih
sedang berjalan.
S
D
10
Budi 10 Budi
Variabel Statis Variabel Dinamis
Start Info Next
A 0 P NIL
Data M 1
2 M 7
I 3
4 I 6
K
5 A 8
M 6 K 2
7 B 0
B
8 M 4
P 9
A
Data : array[1..7] of char
Data M
P
Start Info Next
P 0 NIL
1 Point = ^Data
M 2 7 Data = Record
3 Info : char
I 4 6 Next :
A 8 point
5
K 2 end
6
B 7 0
Simpul
M 8
4
Info
Next
Simpul
Simpul =^Data
Data = record
Info
Next info : type data
Next :Simpul
Peg end
Peg =^data
Data= Record
Nama : string[20]
Pe
Pe
Pe
Nip : string[10]
Pe
Pe
g^
g^
g^
g^
g^
.N
.N
.J
Jabatan : String[10]
.G
am
.N
ab
ex
ap
ip
at
Gapok : Real
t
a
ok
an
Next : Peg;
end
Operasi Pointer
Membentuk simpul dalam memori
New(Var Pointer)
Cth :
New (Pegawai) OS
Nama
Nip
Jabatan
gapok
Fisik
Logika
Deklarasi Variabel
Var P1,P2 : Peg
New(p1)
P1
? ? ? ? ?
New(p2)
P2
? ? ? ? ?
P1
? ? ? ? ?
Peg =^data
Data= Record Deklarasi Variabel
Nama : string[20] Var P1,P2 : Peg
Nip : string[10]
Jabatan : String[10]
Gapok : Real
Next : Peg;
end
P1
? ? ? ? ?
Peg =^data
Data= Record Deklarasi Variabel
Nama : string[20] Var P1,P2 : Peg
Nip : string[10]
Jabatan : String[10]
Gapok : Real
Next : Peg;
end
P1
? ? ? ? ?
Peg =^data
Data= Record Deklarasi Variabel
Nama : string[20] Var P1,P2 : Peg
Nip : string[10]
Jabatan : String[10]
Gapok : Real
Next : Peg;
end
P1
P1^.next = P2
Budi 100 staf 1000000
P2
? ? ? ? ?
P1^.Next^.Next
?
?
1000000
P1^.Next^.Gapok
?
P1^.Next
P1^.next = P2
P1^.Next^.Jabatan
?
staf
P1^.Next^.Nip
?
100
? P1^.Next^.Nama
1000000
P2
Budi
staf P1^.Gapok
P1^.Jabatan
P2
P1
100
P1^.Nip
P1
Budi
P1^.Nama
Linked List/Senarai Berantai
• senarai berantai adalah kumpulan komponen yang disusun
secara berurutan dengan bantuan pointer, dimana masing-
masing kompoen dinamakan sebagai simpul.
• Pada dasarnya satu buah simpul terdiri dari dua bagian, dimana
bagaian pertama dinamakan sebagai Informasi, dan bagian ke
dua adalah penunjuk (pointer) untuk simpul yang berikutnya
Baru
awal
Procedure tambah1(elemen :
tipedata) 20 10
New(Baru)
New(Baru)
Baru^.info
Baru^.info==elemen
elemen 30
If awal = nil
Then Baru
Awal = baru
Awal^.Next = nil
Else
Baru^.next =
Baru^.Next = Awal
awal
Awal==baru
awal baru
fi
Contoh 1:
Buat Algoritma untuk menghasilkan
Linked list sebagai berikut
P B M K I M A
awal
Algoritma
Procedure Tambah( x : char)
New (baru) //Program Utama
Baru^.Info
Baru^.info ==
xX
Bantu = awal 10 60
While Baru^.info >
bantu^.Next^.info do
Bantu = Bantu^.next 30
E-while
Baru
Baru^.next = Bantu^.Next
Bantu^.next = baru
Menambah Di Tengah
New(Baru) Awal
Baru^.Info = X
Bantu==awal
Bantu awal 10 60
While Baru^.info >
bantu^.Next^.info do Bantu
Bantu = Bantu^.next 30
E-while
Baru
Baru^.next = Bantu^.Next
Bantu^.next = baru
Menambah Di Tengah
New(Baru) Awal
Baru^.Info = X
Bantu = awal 10 60
While Baru^.info >
bantu^.Next^.info do Bantu
Bantu = Bantu^.next 30
E-while
Baru
Baru^.next
Baru^.next==Bantu^.Next
Bantu^.Next
Bantu^.next = baru
Menambah Di Tengah
New(Baru) Awal
Baru^.Info = X
Bantu = awal 10 60
While Baru^.info >
bantu^.Next^.info do Bantu
Bantu = Bantu^.next 30
E-while
Baru
Baru^.next = Bantu^.Next
Bantu^.next==baru
Bantu^.next baru
Menambah Di Tengah
New(Baru) Awal
New (Baru)
Baru^.Info
Baru^.info ==xX
Bantu==awal
Bantu awal 10 30 60
While Baru^.info >
bantu^.Next^.info do Bantu
Bantu
Bantu = Bantu^.next
= Bantu^.Next
40
E-while
Baru^.next
Baru^.next==Bantu^.Next
Bantu^.Next Baru
Bantu^.next==baru
Bantu^.next baru
Menambah Di Akhir
Kepala
10 20
akhir 30
Baru