Linked List

Post on 03-Jan-2016

33 views 0 download

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

1

2

3

Linked List( Obyek yang di-Link

satu dengan

lainnya )

4

apa itu 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

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

7

0 1 2 3 4

int A[5];

A[0]

List dengan 5 elemen

A[1] A[4]

secara umum : A[ I ]

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

9

Apa itu alamat ?

10

Alamat atau Addressadalah nomor Byte

RAM 64 MB

0 1 2 3 4

64*1024*1024-1

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

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).

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

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

15

16

Perhatikan instruksi berikut ini :

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

Tercetak : 25

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

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

19

int A;

A

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

. . . . . Byte

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

Tercetak : 25

20

Dapat menampung nilai dalam batas ( kisaran / range) :

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

int A;

A

int

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

Tercetak : 25

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

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

…………………………

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 : …………………………

24

Pertanyaan : Apa / berapa isinya ?

J a w a b :

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

Tercetak : 25

int A;

A

int

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

25

TIDAK DIKETAHUI

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

Tercetak : 25

int A;

A

intPertanyaan : Apa / berapa isinya ?

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

26

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

Tercetak : 25

27

Isinya jelas = 25

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

Tercetak : 25

int A;A = 25;

25

A

int

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

29

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

31

32

int A;

int

A

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

Tercetak : 25

33

int A;int *P;

*int

P

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

Tercetak : 25

int

A

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

35

int A;int *P;

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

Tercetak : 25

*int

P

int

A

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

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

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

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

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

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

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

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

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

45

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

Tercetak : 25

H21C8

21C8

*int

P

25

int

A

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

47

Contoh 4 buah simpul Linked Listdalam memory

25

12

17

10

(1)

(2)

(3)

(4)

tanda panah mengilustrasikan link

48

Proses pembuatan Simpul dan pembuatan Linksampai terbentuk

sebuah Linked-List

49

Perhatikan memory berikut ini :

Belum ada Linked List

50

Akan dibuat sebuah Simpul Awal(simpul pertama)

51

Simpul pertama (1) sudah dibuatmisal alamatnya = H1000

H1000

INFO LINK

(1)

Bagaimana membuatnya akan diterangkan kemudian

52

H1000

INFO LINK

Kemudian INFO akan diisidengan nilai 25

(1)

53

25

H1000

INFO LINK

INFO simpul pertama (1)sudah diisi dengan nilai 25

(1)

Bagaimana cara mengisinya akan diterangkan kemudian

54

25

Misal akan dibuat sebuah simpul baru (simpul kedua)

H1000

INFO LINK

(1)

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

56

25

H1000

INFO LINK

H0800

INFO LINK

INFO simpul kedua (2)akan diisi dengan 12

(1)

(2)

57

25

H1000

INFO LINK

INFO simpul kedua (2)sudah diisi dengan nilai 12

12

H0800

INFO LINK

(1)

(2)

58

25

H1000

INFO LINK

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

12

H0800

INFO LINK

(1)

(2)

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

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

!

61

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

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

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)

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)

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)

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)

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

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 :

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.

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:

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.

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

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

73