Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pointer & Linked List.

Presentasi serupa


Presentasi berjudul: "Pointer & Linked List."— Transcript presentasi:

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


Download ppt "Pointer & Linked List."

Presentasi serupa


Iklan oleh Google