Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Pointer & Linked List
2
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 Budi 10 Budi D 10 Variabel Statis Variabel Dinamis
3
A M I K B P P M I A K B NIL 7 6 8 2 4 Info Next Start 1 2 Data 3 4 5 6
1 2 3 4 5 6 7 8 9 P M I A K B NIL 7 6 8 2 4 Data
4
A M I K B P Data : array[1..7] of char Data
5
P M I A K B NIL 7 6 8 2 4 Simpul Info Next Start 1 2 Point = ^Data
1 2 3 4 5 6 7 8 9 NIL 7 6 8 2 4 Point = ^Data Data = Record Info : char Next : point end Simpul Info Next
6
Simpul =^Data Data = record info : type data Next :Simpul end Simpul
Peg Peg =^data Data= Record Nama : string[20] Nip : string[10] Jabatan : String[10] Gapok : Real Next : Peg; end Peg^.Nama Peg^.Next Peg^.Nip Peg^.Jabatan Peg^.Gapok
7
Operasi Pointer OS Nama Membentuk simpul dalam memori Nip Jabatan
New(Var Pointer) Cth : New (Pegawai) OS Nama Nip Jabatan gapok Fisik Logika
8
Deklarasi Variabel Var P1,P2 : Peg New(p1) P1 ? New(p2) P2 ?
9
? P1.Nama = Budi P1.Nip = 100 P1.Jabatan=staf P1.Gapok = 100000
P1.Nama = Budi P1.Nip = 100 P1.Jabatan=staf P1.Gapok = (Variabel Statis) P1^.Nama = Budi P1^.Nip = 100 P1^.Jabatan=staf P1^.Gapok = P1^.Next = nil (Variabel Dinamis) P2 ?
10
Deklarasi Variabel Var P1,P2 : Peg Peg =^data Data= Record
Nama : string[20] Nip : string[10] Jabatan : String[10] Gapok : Real Next : Peg; end Deklarasi Variabel Var P1,P2 : Peg P1 Budi 100 staf P2 ?
11
Deklarasi Variabel Var P1,P2 : Peg P2 = P1 Peg =^data Data= Record
Nama : string[20] Nip : string[10] Jabatan : String[10] Gapok : Real Next : Peg; end Deklarasi Variabel Var P1,P2 : Peg P1 Budi 100 staf P2 = P1 P2 ?
12
Deklarasi Variabel Var P1,P2 : Peg P1^.next = P2 Peg =^data
Data= Record Nama : string[20] Nip : string[10] Jabatan : String[10] Gapok : Real Next : Peg; end Deklarasi Variabel Var P1,P2 : Peg P1 P1^.next = P2 Budi 100 staf P2 ?
13
P2 P1^.next = P2 P1 P1 Budi 100 staf 1000000 P2 ? P1^.Next Budi 100
P1^.Nama P1^.Nip P1^.Jabatan P1^.Gapok P2 P1^.Next^.Nama P1^.Next^.Nip P1^.Next^.Gapok P1^.Next^.Next P1^.Next^.Jabatan
14
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 Senarai berantai dengan 4 simpul
15
Operasi Pada Senarai Menambah Simpul Menambah Simpul di Awal
Menambah simpul di akhir Menambah Simpul di tengah Menghapus Simpul Menghapus Simpul Awal Menghapus Simpul di Akhir Menghapus Simpul Di Tengah Membaca isi Senarai (Travelsal)
16
Menambah Simpul Maka Nilai pointer adalah Awal = nil Akhir = nil
Sebelum melakukan penambahan simpul, kita inisialisasi struktur datanya adalah Type Simpul =^data Data = record Info : char; Next : Simpul End; Var Elemen : char Awal, Akhir, Baru : Simpul Maka Nilai pointer adalah Awal = nil Akhir = nil Baru = nil
17
Menambah Simpul Awal New (baru) awal Baru^.info = elemen If awal = nil
Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal
18
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal New(Baru) Baru
19
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal 10 Baru^.info = elemen Baru
20
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal 10 Baru Awal = baru
21
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal 10 Baru Awal^.next = nil
22
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal New(Baru) 10 Baru
23
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal Baru^.info = elemen 10 20 Baru
24
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal 10 20 Baru Baru^.Next = Awal
25
Menambah Simpul Awal awal Procedure tambah1(elemen : tipedata)
New (Baru0 Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi awal 10 20 Baru awal = baru awal 20 10 Baru
26
Procedure tambah1(elemen : tipedata) New(Baru) Baru^.info = elemen
awal Procedure tambah1(elemen : tipedata) New(Baru) Baru^.info = elemen If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi 20 10 New(Baru) Baru^.info = elemen 30 Baru Baru^.Next = Awal awal = baru
27
Contoh 1: Buat Algoritma untuk menghasilkan Linked list sebagai berikut P M K M A B I awal
28
Algoritma Procedure Tambah( x : char) New (baru) Baru^.info = X
If awal = nil Then Awal = baru Awal^.Next = nil Else Baru^.next = awal fi //Program Utama Read Kalimat I = 1 While I <= length(Kalimat) do Tambah(kalimat[i] I = I + 1 E-while
29
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal New (Baru) Baru
30
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal Baru^.info = X 10 Baru
31
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal 10 Baru^.Next = Nil Baru
32
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal 10 Baru Awal = Baru
33
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal New (Baru) Baru^.info = X 10 Baru^.Next = Nil akhir 20 Baru Akhir = awal Akhir^.Next = Baru
34
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru)
Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Awal New (Baru) Baru^.info = X 10 20 Baru^.Next = Nil akhir 30 Baru Akhir = awal Akhir =Akhir^.Nextl Akhir^.Next = Baru
35
Menambah Di Tengah New (Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru New (Baru) 10 60 Baru
36
Menambah Di Tengah New(Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru Baru^.info = x 10 60 30 Baru
37
Menambah Di Tengah New(Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru Bantu = awal 10 60 Bantu 30 Baru
38
Menambah Di Tengah New(Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru 10 60 Bantu 30 Baru Baru^.next = Bantu^.Next
39
Menambah Di Tengah New(Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru 10 60 Bantu 30 Baru Bantu^.next = baru
40
Menambah Di Tengah New(Baru) Baru^.Info = X Bantu = awal
While Baru^.info > bantu^.Next^.info do Bantu = Bantu^.next E-while Baru^.next = Bantu^.Next Bantu^.next = baru Baru^.info = x Bantu = awal 10 30 60 Bantu Bantu = Bantu^.Next 40 Baru^.next = Bantu^.Next Baru Bantu^.next = baru
41
Menambah Di Akhir Kepala 10 20 akhir 30 Baru
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.