Linked List

73
1

description

Linked List. Bab 4. Buku :. halaman 88. Linked List. Linked List ( Obyek yang di-Link satu dengan lainnya ). apa itu List ?. Contoh sebuah LIST. 0 1 2 3 4. int A[5];. Array satu dimensi. Array satu dimensi Disebut juga : Vector - PowerPoint PPT Presentation

Transcript of Linked List

Page 1: Linked List

1

Page 2: Linked List

2

Page 3: Linked List

3

Linked List( Obyek yang di-Link

satu dengan

lainnya )

Page 4: Linked List

4

apa itu List ?

Page 5: Linked List

5

Contoh sebuah LIST

int A[5];

0 1 2 3 4

Array satu dimensiDisebut juga : VectorKadang-kadang disebut juga : List

Array satu dimensi

Page 6: Linked List

6

int A[5];

0 1 2 3 4

biasa diilustrasikan sebagai berikut :

Kadang-kadang diilustrasikan sebagai berikut :

0

1

2

3

4

4

3

2

1

0

Untuk StackUntuk daftar

Page 7: Linked List

7

0 1 2 3 4

int A[5];

A[0]

List dengan 5 elemen

A[1] A[4]

secara umum : A[ I ]

Page 8: Linked List

8

0 1 2 3 4

int A[5]; List dengan 5 elemen, dengan alamat CONTIGUOUS

H21D8H21DA

H21DC

H21DEH21E0

#include<stdio.h>void main(){ int A[5]; int I; for (I=0; I<=4; I++ ) printf( “\n%X”, &A[I] );}

akan tercetak :

21D821DA21DC21DE21E0

Tiap elemen 2 BYTE

Page 9: Linked List

9

Apa itu alamat ?

Page 10: Linked List

10

Alamat atau Addressadalah nomor Byte

RAM 64 MB

0 1 2 3 4

64*1024*1024-1

Page 11: Linked List

11

dengan: int A;terbentuk sebuah variabel (Elemen)sebesar 2 Byte

2 BYTE

Nomor BYTE pertama (paling kiri)- sering disebut MSB -yang dipakai sebagai alamat

MSB = Most Significant Byte

Page 12: Linked List

12

0 1 2 3 4

int A[5]; List dengan 5 elemen

ini bukan Linked Listbukan List yang di-link satu dengan yang lainnya

tapi List yang bersisian atau bergandengan atau berurutan (contiguous) satu dengan lainnya, sedemikian rupa sehingga alamat tiap elemen bersambung satu dengan yang lainnya (contiguous).

Page 13: Linked List

13

Linked List

Obyek yang di-link satu dengan lainnya sehingga

menjadi suatu List

Yang dimaksud dengan

Obyek disini adalah :

sekumpulan elemenyang digabungmenjadi satu kelompok yang disebut : structure,

atau Vertex, atau Node, atau Titik,atau Recordatau

Simpul

setiap elemenmempunyai tipe datatersendiri

Page 14: Linked List

14

Linked List Contoh pembuatan struktur sebuah Simpul yang dinyatakan dengan:

INFO LINK

typedef struct Node { int INFO; struct Node *LINK; };typedef struct Node Simpul;

Tipe : integer untuk menyimpan data

tipe : pointer, pointer untuk menunjuk node atau Simpul

Simpul dengan 2 elemen, INFO dan LINK

Page 15: Linked List

15

Page 16: Linked List

16

Perhatikan instruksi berikut ini :

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 17: Linked List

17

int A;A = 25;printf(“%i”, A);

int A;Tercetak : 25

A

intDibuat sebuah variabel dengan :Nama : A

Tipe : integerVariabel adalah suatu area didalam memory yang isinya dapat diubah-ubah

Page 18: Linked List

18

int A;A = 25;printf(“%i”, A);

int A;

Tercetak : 25

A

intSebuah variabel dengan tipe integer, dalam memory menempati area sebanyak :

. . . . . Byte

Disiapkan sebuah variabel :Nama : ATipe : integer

Page 19: Linked List

19

int A;

A

intSebuah variabel dengan tipe integer, dalam memory menempati area sebanyak :

. . . . . Byte

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 20: Linked List

20

Dapat menampung nilai dalam batas ( kisaran / range) :

…………………………… Sampai dengan ……………………….

int A;

A

int

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 21: Linked List

21

-32768 32767

Dapat menampung nilai dalam batas ( kisaran / range) :

…………………………… Sampai dengan ……………………….

int A;

A

int

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 22: Linked List

22

Pertanyaan : Apakah variabel ini ada isinya ?

J a w a b :

int A;A = 25;printf(“%i”, A);

Tercetak : 25

int A;

A

int

…………………………

Page 23: Linked List

23

A D A

int A;A = 25;printf(“%i”, A);

Tercetak : 25

int A;

A

intPertanyaan : Apakah variabel ini ada isinya ?

J a w a b : …………………………

Page 24: Linked List

24

Pertanyaan : Apa / berapa isinya ?

J a w a b :

int A;A = 25;printf(“%i”, A);

Tercetak : 25

int A;

A

int

………………………...

Page 25: Linked List

25

TIDAK DIKETAHUI

int A;A = 25;printf(“%i”, A);

Tercetak : 25

int A;

A

intPertanyaan : Apa / berapa isinya ?

J a w a b : ………………………...

Page 26: Linked List

26

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 27: Linked List

27

Isinya jelas = 25

int A;A = 25;printf(“%i”, A);

Tercetak : 25

int A;A = 25;

25

A

int

Page 28: Linked List

28

int A;A = 25;printf(“%i”, A);

25

A

int

Yang dicetak ISI

variabel A

Dicetak dengan menggunakan format integer

int A;A = 25;printf(“%i”, A);

Tercetak : 25

Page 29: Linked List

29

Page 30: Linked List

30

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

int A;A = 25;printf(“%i”, A);

Tercetak : 25

25

A

int

25 21C8

int *int

A P

H21C8

Tercetak : 25

Page 31: Linked List

31

Page 32: Linked List

32

int A;

int

A

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

Page 33: Linked List

33

int A;int *P;

*int

P

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

int

A

Page 34: Linked List

34

int A;int *P;

P adalah variabel bertipe : Pointer Integer

Hanya dapat diisi dengan alamat,

Alamat variabel yang bertipe int (integer).Tidak dapat diisi dengan nilai seperti nilai ujian, jumlah barang, umur dan sebagainya

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

*int

P

int

A

Page 35: Linked List

35

int A;int *P;

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

*int

P

int

A

Page 36: Linked List

36

int A;int *P;A = 25;

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

*int

P

25

int

A

Page 37: Linked List

37

int A;int *P;A = 25;P = &A;

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

21C8

*int

P

25

int

A

Page 38: Linked List

38

int A;int *P;A = 25;P = &A;

H21C8 Misal alamat variabel A berada pada Hexa 21C8

Pointer P diisi dengan alamat variabel A

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

21C8

*int

P

25

int

A

Page 39: Linked List

39

int A;int *P;A = 25;P = &A;

Pointer P diisi dengan alamat variabel A

Tanda &menyatakan alamat

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

H21C8 Misal alamat variabel A berada pada Hexa 21C8

21C8

*int

P

25

int

A

Page 40: Linked List

40

int A;int *P;A = 25;P = &A;

Alamat variabel A misal : 21C8 , dalam notasi Hexa Decimal

Pointer P diisi dengan alamat variabel A

Tanda &menyatakan alamat

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

H21C8 Misal alamat variabel A berada pada Hexa 21C8

21C8

*int

P

25

int

A

Page 41: Linked List

41

H21C8 = D …………………

(21C8)16 = ( …………… )10

2 1 C 8

Bilangan Hexa : x x x x . x x 4096 256 16 1 1/16 1/256

8 x 1 = 8

12 x 16 = 192

1 x 256 = 256

2 x 4096 = 8192 +8648

Page 42: Linked List

42

H21C8 = D …………………

(21C8)16 = ( …………… )10

2 1 C 8

Bilangan Hexa : x x x x . x x 4096 256 16 1 1/16 1/256

8 x 1 = 8

12 x 16 = 192

1 x 256 = 256

2 x 4096 = 8192 +8648

1 / 2

1 / 4

1 / 8

1 / 16

1 / 32

1 / 64

1 / 128

1 / 256

========

0.5

0.25

0.125

0.0625

0.03125

0.015625

0.0078125

0.00390625

Page 43: Linked List

43

int A;int *P;A = 25;P = &A;

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

H21C8

21C8

*int

P

25

int

A

Page 44: Linked List

44

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25Mencetak isi variabel yang alamatnya disimpan dalam Pointer P

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

H21C8

21C8

*int

P

25

int

A

Page 45: Linked List

45

int A;int *P;A = 25;P = &A;printf(“%i”, *P);

Tercetak : 25

H21C8

21C8

*int

P

25

int

A

Page 46: Linked List

46

INFO LINK

typedef struct Node { int INFO; struct Node *LINK; };typedef struct Node Simpul;

Tulisan dengan warna biru atau

merah, adalah nama yang kita karang sendiri.Sedangkan tulisan dengan warna hitam adalah ketentuan dalam bahasa C

Page 47: Linked List

47

Contoh 4 buah simpul Linked Listdalam memory

25

12

17

10

(1)

(2)

(3)

(4)

tanda panah mengilustrasikan link

Page 48: Linked List

48

Proses pembuatan Simpul dan pembuatan Linksampai terbentuk

sebuah Linked-List

Page 49: Linked List

49

Perhatikan memory berikut ini :

Belum ada Linked List

Page 50: Linked List

50

Akan dibuat sebuah Simpul Awal(simpul pertama)

Page 51: Linked List

51

Simpul pertama (1) sudah dibuatmisal alamatnya = H1000

H1000

INFO LINK

(1)

Bagaimana membuatnya akan diterangkan kemudian

Page 52: Linked List

52

H1000

INFO LINK

Kemudian INFO akan diisidengan nilai 25

(1)

Page 53: Linked List

53

25

H1000

INFO LINK

INFO simpul pertama (1)sudah diisi dengan nilai 25

(1)

Bagaimana cara mengisinya akan diterangkan kemudian

Page 54: Linked List

54

25

Misal akan dibuat sebuah simpul baru (simpul kedua)

H1000

INFO LINK

(1)

Page 55: Linked List

55

25

H1000

INFO LINK

Sudah dibuat simpul kedua (2)Misal alamatnya = H0800

H0800

INFO LINK

(1)

(2)

Alamat simpul baru, tidak mesti lebih besar dari alamat simpul pertama

Page 56: Linked List

56

25

H1000

INFO LINK

H0800

INFO LINK

INFO simpul kedua (2)akan diisi dengan 12

(1)

(2)

Page 57: Linked List

57

25

H1000

INFO LINK

INFO simpul kedua (2)sudah diisi dengan nilai 12

12

H0800

INFO LINK

(1)

(2)

Page 58: Linked List

58

25

H1000

INFO LINK

Akan di-link simpul pertama (1) dengan simpul kedua (2)

12

H0800

INFO LINK

(1)

(2)

Page 59: Linked List

59

25 0800

H1000

INFO LINK

Simpul pertama (1) sudah di-linkdengan simpul kedua (2)

12

H0800

INFO LINK

LINK simpul pertama (1)diisi dengan alamatsimpul kedua (2)

(1)

(2)

Bagaimana mengisi LINK simpul pertama dengan alamatsimpul kedua akan diterangkan kemudian

Page 60: Linked List

60

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

Instruksi untuk meng-link yaitu mengisi alamat simpul (2) kedalam LINK simpul (1)termasuk intruksi atau tugas yang sulit

!

Page 61: Linked List

61

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

Kemudian :Akan dibuat simpul (3), danINFO simpul (3) diisi dengan 17

Page 62: Linked List

62

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

Sudah dibuat simpul ketiga (3)Misal alamatnya = H1400

17

H1400

INFO LINK

(3)

Page 63: Linked List

63

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

Akan di-link simpul kedua (2) dengan simpul ketiga (3)

Kemudian :

17

H1400

INFO LINK

(3)

Page 64: Linked List

64

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

Simpul kedua (2) sudah di-linkdengan simpul ketiga (3)

17

H1400

INFO LINK

(3)

Page 65: Linked List

65

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

17 1100

H1400

INFO LINK

(3)

Dan seterusnya dibuat simpul (4),INFO simpul (4) diisi 10dan simpul (3) di-link dengan simpul (4)

10

H1100

INFO LINK

(4)

Page 66: Linked List

66

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

17 1100

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Sekarang sudah tercipta 4 buah simpul,dan sudah ter-link satu dengan lainnya,sehingga membentuk sebuah Linked List

Page 67: Linked List

67

Untuk memudahkan melihat hubungan (link) antara satu simpul dengan simpul lainnya, maka semua isi LINK (yang berbentuk angka ) diganti atau direpresentasikan dengan tanda panahsehingga ilustrasinya menjadi sebagai berikut :

Page 68: Linked List

68

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

17 1100

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Semua alamat dalam LINK dinyatakan dengan tanda panah.

Page 69: Linked List

69

25

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

17

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Link dalam bentukangka alamat tidak diperlukan lagi

Sehingga:

Page 70: Linked List

70

25

H1000

INFO LINK

12

H0800

INFO LINK

17

H1400

INFO LINK

10

H1100

INFO LINK

Alamat tiap-tiap simpul juga tidak perlu diketahui, Yang perlu diketahui adalah link antar simpul sehingga membentuk sebuah Linked List.

Page 71: Linked List

71

25

INFO LINK

12

INFO LINK

17

INFO LINK

10

INFO LINK

Linked List empat buah simpuldapat dinyatakan demikian ini,tanpa memperlihatkan alamat simpul secara fisik

Page 72: Linked List

72

25

INF

O

LIN

K

12

(1) (2)

17

(3)

10

(4)

Linked List empat buah simpul ini dapat disederhanakan gambarnya menjadi :

INF

O

LIN

K

INF

O

LIN

K

INF

O

LIN

K

Page 73: Linked List

73