Top Banner
1 Linked List
93

Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

Mar 22, 2019

Download

Documents

phamnguyet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

1

6.3 & 7.3 NESTED LOOP

Linked List

Page 2: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

2

Linked List ( List yang di-Link

satu dengan

lainnya )

Page 3: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

3

apa itu List ?

Page 4: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

4

Contoh sebuah LIST

int A[5];

0 1 2 3 4

Array satu dimensi Disebut juga : Vector Kadang-kadang disebut juga : List

Page 5: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

5

int A[5];

0 1 2 3 4

biasa diilustrasikan sebagai berikut :

Kadang-kadang diilustrasikan sebagai berikut :

0

1

2

3

4

Page 6: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

6

0 1 2 3 4

int A[5];

A[0]

List dengan 5 elemen

A[1] A[4]

secara umum : A[ I ]

Page 7: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

7

0 1 2 3 4

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

H21D8 H21DA

H21DC

H21DE H21E0

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

akan tercetak :

21D8 21DA 21DC 21DE 21E0

Tiap elemen 2 BYTE Algo-1, jilid 2 hal. 10.03

Page 8: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

8

Apa itu alamat ?

Page 9: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

9

Alamat atau Address adalah nomor Byte

RAM 64 MB

0 1 2 3 4

64*1024*1024-1

Page 10: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

10

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 11: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

11

0 1 2 3 4

int A[5]; List dengan 5 elemen

ini bukan Linked List bukan 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 12: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

12

Linked List

List yang di-link satu dengan lainnya

Yang dimaksud dengan

List disini adalah : sekumpulan elemen yang digabung menjadi satu kelompok yang disebut : structure,

atau Vertex, atau Node, atau Titik, atau Record atau

Simpul

setiap elemen mempunyai tipe data tersendiri

Page 13: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

13

Linked List

Contoh 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 14: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

14

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 ketentauan dalam bahasa C

Page 15: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

15

Contoh 4 buah simpul Linked List dalam memory

25

12

17

10

(1)

(2)

(3)

(4)

tanda panah mengilustrasikan link

Page 16: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

16

Proses pembuatan Simpul dan pembuatan Link sampai terbentuk

sebuah Linked-List

Page 17: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

17

Perhatikan memory berikut ini :

Belum ada Linked List

Page 18: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

18

Akan dibuat sebuah Simpul Awal (simpul pertama)

Page 19: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

19

Simpul pertama (1) sudah dibuat misal alamatnya = H1000

H1000

INFO LINK

(1)

Bagaimana membuatnya akan diterangkan kemudian

Page 20: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

20

H1000

INFO LINK

Kemudian INFO akan diisi dengan nilai 25

(1)

Page 21: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

21

25

H1000

INFO LINK

INFO simpul pertama (1) sudah diisi dengan nilai 25

(1)

Bagaimana cara mengisinya akan diterangkan kemudian

Page 22: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

22

25

Misal akan dibuat sebuah simpul baru (simpul kedua)

H1000

INFO LINK

(1)

Page 23: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

23

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 24: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

24

25

H1000

INFO LINK

H0800

INFO LINK

INFO simpul kedua (2) akan diisi dengan 12

(1)

(2)

Page 25: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

25

25

H1000

INFO LINK

INFO simpul kedua (2) sudah diisi dengan nilai 12

12

H0800

INFO LINK

(1)

(2)

Page 26: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

26

25

H1000

INFO LINK

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

12

H0800

INFO LINK

(1)

(2)

Page 27: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

27

25 0800

H1000

INFO LINK

Simpul pertama (1) sudah di-link dengan simpul kedua (2)

12

H0800

INFO LINK

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

(1)

(2)

Bagaimana mengisi LINK simpul pertama dengan alamat simpul kedua akan diterangkan kemudian

Page 28: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

28

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 29: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

29

25 0800

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

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

Page 30: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

30

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 31: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

31

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 32: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

32

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

Simpul kedua (2) sudah di-link dengan simpul ketiga (3)

17

H1400

INFO LINK

(3)

Page 33: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

33

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 10 dan simpul (3) di-link dengan simpul (4)

10

H1100

INFO LINK

(4)

Page 34: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

34

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 35: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

35

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

Page 36: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

36

25 0800

H1000

INFO LINK

12 1400

H0800

INFO LINK

(1)

(2)

17 1100

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Link dalam bentuk angka alamat tidak diperlukan lagi

Sehingga:

Page 37: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

37

25

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

17

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Page 38: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

38

25

H1000

INFO LINK

12

H0800

INFO LINK

(1)

(2)

17

H1400

INFO LINK

(3)

10

H1100

INFO LINK

(4)

Alamat sebuah simpul, sebenarnya, tidak perlu diketahui atau dinyatakan

Page 39: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

39

25

INFO LINK

12

INFO LINK

(1)

(2)

17

INFO LINK

(3)

10

INFO LINK

(4)

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

Page 40: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

40

25

INFO

LINK

12

(1) (2)

17

(3)

10

(4)

Linked List empat buah simpul ini dapat disederhanakan gambarnya menjadi :

INFO

LINK

INFO

LINK

INFO

LINK

Page 41: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

41

3. 01

Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa elemen yang dijadikan satu structure atau record yang dibentuk dengan perintah struct Dalam buku ini akan dibicarakan 4 macam linked list sebagai berikut :

Page 42: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

42

3. 01

I. LINEAR SINGLY LINKED LIST

II. LINEAR DOUBLY LINKED LIST

III. CIRCULAR SINGLY LINKED LIST

IV. CIRCULAR DOUBLY LINKED LIST

Page 43: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

43

3. 01

I. LINEAR SINGLY LINKED LIST

25

FIRST

12 17 10

LAST

II. LINEAR DOUBLY LINKED LIST

25

FIRST

12 17 10

LAST

Page 44: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

44

3. 01 III. CIRCULAR SINGLY LINKED LIST

25

FIRST

12 17 10

LAST

IV. CIRCULAR DOUBLY LINKED LIST

25

FIRST

12 17 10

LAST

Page 45: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

45

3. 02

LINKED LIST LURUS DENGAN POINTER TUNGGAL

Page 46: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

46

3. 02

1.1. ILUSTRASI

LINEAR SINGLY LINKED LIST

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

10

FIRST

17 12 25

LAST

(4) (3) (2) (1)

atau

Page 47: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

47

3. 02

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

10

FIRST

17 12 25

LAST

(4) (3) (2) (1)

atau

(1) (2) (3) (4)

(1) (2) (3) (4)

Urutan insert

Urutan delete

Urutan insert

Urutan delete

Page 48: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

48

3. 02

INSERT : Masuk, Simpan, Tulis

DELETE : Keluar, Ambil, Baca atau Hapus

Page 49: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

49

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

10

FIRST

17 12 25

LAST

(4) (3) (2) (1)

(1) (2) (3) (4)

(1) (2) (3) (4)

Urutan insert

Urutan delete

Urutan insert

Urutan delete

Ilustrasi-1

Ilustrasi-2

Pertanyaan : Mana yang mengikuti prinsip STACK, dan mana yang mengikuti prinsip QUEUE, Linked List ilustrasi-1 atau Linked List ilustrasi-2

Page 50: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

50

3. 02 1.1. ILUSTRASI

Keterangan : Dari ilustrasi diatas, dapat diterangkan sebagai berikut:

Ada 4 simpul, simpul no (1) sampai dengan no (4) Setiap simpul (record) terdiri dari dua elemen (field) yaitu : Field INFO misal bertipe integer.

Field LINK bertipe pointer

Untuk simpul no (1), Field INFO berisi nilai 25 Field LINK berisi alamat record no (2)

Yang diilustrasikan dengan panah yang menunjuk record no (2)

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

Page 51: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

51

3. 02

25

FIRST

12 17 10

LAST

(1) (2)

Dari nama pointer FIRST dan LAST dapat diperkirakan bahwa record no (1) yang pertama kali dibuat dan record no (4) yang terakhir dibuat. Walaupun secra teknis dapat saja bukan demikian.

Simpul pertama no (1) ditunjuk oleh pointer FIRST dan simpul terakhir no (4) ditunjuk oleh pointer LAST

(3) (4)

Page 52: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

52

1.2 PROSES

2a. 2b. 2c. 2d. 2e. 2f. 2g.

Pembuatan Record Awal (inisialisasi) Insert Kanan (Insert Akhir) Insert Kiri (Insert Awal) Insert Tengah Delete Kanan Delete Kiri Delete Tengah

Page 53: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

53

3.03 Ilustrasi sebuah Simpul (Vertex, atau Node, atau Record)

Nama field Tipe Isi

: LINK : pointer : akan diisi dengan alamat record berikutnya

Nama field Tipe Isi

: INFO : integer : akan diisi data

Tipe data tentunya disesuaikan dengan keperluan. Disini diambil saja contoh yang sederhana dimana data yang akan disimpan adalah bernilai integer.

Simpul dengan 2 elemen atau field

Page 54: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

54

3.03 Struktur sebuah Simpul

Untuk „memberitahukan komputer „ bahwa kita memerlukan suatu Simpul atau record dengan tipe strukur demikian ini, perlu ditulis intruksi-instruksi sebagai berikut :

typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

Page 55: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

55

3.03

typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

Disiapkan 3 buah variabel pointer, yaitu : P, FIRST dan LAST yang kesemuanya berkaitan dengan simpul atau record atau node yang bertipe Simpul

Masih banyak cara penulisan lain untuk maksud yang sama. Disini diambil suatu cara yang dianggap paling sederhana.

Page 56: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

56

3.03 typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

Disini :

Simpul Adalah nama tipe sebagaimana nama tipe yang telah

disediakan oleh Bahasa C seperti : int, long int, float,

dan sebagainya. Bila int adalah nama tipe suatu

variable, maka Simpul disini adalah nama tipe dari suatu

structure atau record, dimana structure tersebut

terdiri dari dua field, yaitu :

INFO yang bertipe integer (int), dan

LINK yang bertipe pointer (pakai *) untuk structure

tersebut.

Page 57: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

57

3. 04

typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

1.2.1. Pembuatan Simpul ( Baru )

Perhatikan kembali instruksi untuk menyiapkan tipe sebuah simpul sebagai berikut :

Page 58: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

58

3. 04 1.2.1. Pembuatan Simpul ( Baru )

Instruksi untuk membuat sebuah record baru :

P = (Simpul *) malloc(sizeof(Simpul));

Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut simpul yang ditunjuk oleh pointer P, yang dapat diilustrasikan sebagai berikut

P

Page 59: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

59

3. 04

P = (Simpul *) malloc(sizeof(Simpul));

malloc :

Maksudnya : memory allocation yaitu mengalokasikan memory sebesar atau seukuran (sizeof) yang diperlukan untuk Simpul

Page 60: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

60

3. 04

P = (Simpul *) malloc(sizeof(Simpul));

21C8

P

INFO LINK

H21C8

Alamat simpul dicatat dalam variabel P (P bertipe Pointer untuk menunjuk Simpul)

Page 61: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

61

3. 04

21C8

P

INFO LINK

H21C8

P

Ilustrasi fisik dalam memory diatas, dapat digambarkan dengan ilustrasi diagram sebagai berikut :

Page 62: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

62

3. 04 Contoh (sederhana) program selengkapnya untuk membuat sebuah record atau simpul yang alamat simpul tersebut dicatat dalam pointer P.

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

main()

{ int X;

scanf(“%i”, &X);

p = (Simpul *)alloc(sizeof(Simpul));

P->INFO = X;

P->LINK = NULL;

}

Page 63: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

63

3. 04

main()

{ int X;

scanf(“%i”, &X);

p = (Simpul *)alloc(sizeof(Simpul));

P->INFO = X;

P->LINK = NULL;

}

Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut simpul yang ditunjuk oleh pointer P

Nilai X (misal 25 hasil input sebelumnya) disimpan dalam elemen INFO

Field LINK berisi NULL artinya pointer LINK tidak menunjuk kesuatu alamat tertentu

25

P

Page 64: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

64

3. 04

P->INFO = X;

25

P

P->INFO maksudnya : Field INFO suatu simpul, yang simpulnya sedang

ditunjuk oleh pointer P

dalam bahasa C, ditulis dengan dua karakter yaitu tanda - (minus) dan tanda > (tanda lebih besar)

Page 65: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

65

3. 04

P->LINK = NULL;

25 \0

P

P->LINK field LINK suatu simpul, yang simpulnya

sedang ditunjuk oleh pointer P

0 0 0 0 0 0 0 0 karakter NULL nilai ASCIInya = 0 (nol)

Page 66: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

66

3. 04

25 \0

P

Nilai pointer yang berisi NULL sering diilustrasikan sebagai panah „ground‟ sebagai berikut :

25

P

Page 67: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

67

3.05 Perhatikan kembali LINEAR SINGLY LINKED LIST yang akan dibuat sebagai yang diilustrasikan berikut ini :

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

Page 68: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

68

3.05

1.2.2. Pembuatan Simpul Awal.

Simpul awal, maksudnya adalah simpul yang pertama kali dibuat. Setelah itu simpul baru dapat ditambahkan baik disebelah kanan, maupun disebelah kiri simpul simpul yang sudah ada.

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

Simpul ini yang kita ambil sebagai contoh untuk

simpul awal yang ditunjuk oleh pointer FIRST

Page 69: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

69

3.05 Perhatikan kembali struktur sebuah simpul, dan variabel-variabel yang diperlukan

typedef struct Node {

int INFO;

struct Node *LINK;

};

typedef struct Node Simpul;

Simpul *P, *FIRST, *LAST;

int X;

Dalam memory

P FIRST LAST X

Menyatakan struktur Simpul dan menyiapkan variabel

Perhatikan : Ada 3 buah pointer : P , FIRST, dan LAST

Page 70: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

70

3.05

void Awal (void)

{ int X;

scanf(“%i”, &X);

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

}

Fungsi untuk membuat simpul awal

1)

2)

3)

4)

5)

1.2.2. Pembuatan Simpul Awal.

Ada 5 intruksi pokok

Page 71: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

71

3.05

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

1)

2)

3)

4)

5)

P = (Simpul *) malloc(sizeof(Simpul));

Ada 5 instruksi pokok yang perlu kita perhatikan :

1)

Terbentuk sebuah simpul yang ditunjuk oleh pointer P yang dapat diilustrasikan dengan gambar sebagai berikut :

P

Page 72: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

72

3.05

P

1000

P FIRST LAST X

1000

Page 73: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

73

3.05

P

Sebuah simpul yang ditunjuk oleh pointer P ( alamatnya dicatat dalam pointer P )

P

P

P

P

P

P

Banyak cara menggambarkan

ilustrasi pointer P menunjuk sebuah simpul

Page 74: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

74

3.05

P

Sebuah simpul yang ditunjuk oleh pointer P ( alamatnya dicatat dalam pointer P )

Field ini namanya :

Field ini namanya : P->LINK

P->INFO

Page 75: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

75

3.05

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

1)

2)

3)

4)

5)

P->INFO = X; 2)

25

P

Page 76: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

76

3.05

25

P

1000

P FIRST LAST X

25

1000

Page 77: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

77

3.05

25

P

Field ini namanya :

Field ini namanya : P->LINK

P->INFO

Dengan perintah : printf(“%i”, P->INFO); Akan tercetak : 25

Page 78: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

78

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

Simpul pertama selalu ditunjuk Oleh pointer FIRST

Page 79: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

79

3.05

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

1)

2)

3)

4)

5)

FIRST = P; 3)

25

P

FIRST

25

P

FIRST

25

P

FIRST

Page 80: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

80

3.05

25

P

1000 1000

P FIRST LAST X

25

1000

FIRST

Page 81: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

81

3.05

25

FIRST

Field ini namanya :

Field ini namanya : P->LINK atau FIRST->LINK

P->INFO atau FIRST->INFO

P

Page 82: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

82

25

FIRST

12 17 10

LAST

(1) (2) (3) (4)

Simpul terakhir selalu ditunjuk Oleh pointer LAST

Page 83: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

83

3.05

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

1)

2)

3)

4)

5)

LAST = P; 4)

25

P

FIRST

LAST

25

P

FIRST

25

P

LAST

LAST

FIRST

Page 84: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

84

3.05

25

P

1000 1000 1000

P FIRST LAST X

25

1000

FIRST

LAST

Page 85: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

85

3.05

25

FIRST

Field ini namanya :

Field ini namanya : P->LINK atau FIRST->LINK atau LAST->LINK

P->INFO atau FIRST->INFO atau LAST->INFO

P

LAST

Page 86: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

86

3.05

P=(Simpul*)malloc(sizeof(Simpul));

P->INFO = X;

FIRST = P;

LAST = P;

P->LINK = NULL;

1)

2)

3)

4)

5)

P->LINK = NULL; 5)

25

P

FIRST

LAST

Page 87: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

87

3.05

25

P

1000 1000 1000

P FIRST LAST X

25

1000

FIRST LAST

Sudah terbentuk sebuah Simpul awal

Page 88: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

88

3.05

LATIHAN DI

KELAS

Page 89: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

89

3.05

25

P

FIRST

LAST

Pertanyaan : Ada berapa buah simpul yang terlihat

Page 90: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

90

3.05

25

P

FIRST

LAST

Jawab : Ada 1 buah simpul

Page 91: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

91

3.05

25

P

FIRST

LAST

Pertanyaan : Ada berapa buah pointer yang terlihat

- Apa nama masing-masing pointer

- Apa isi masing-masing pointer

Page 92: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

92

3.05

25

P

FIRST

LAST

1 2 3

4

Jawab : Ada 4 buah pointer

1

2

3

4

No Nama Isi Pointer Pointer pointer

P &(1)

FIRST &(1)

LAST &(1)

P->LINK atau FIRST->LINK atau LAST->LINK

NULL

Page 93: Linked List 6.3 & 7.3 NESTED LOOP - E-Learning Didi Juardi · Linked List adalah List yang di link satu dengan yang lainnya. Sedangkan list itu sendiri adalah merupakan gabungan beberapa

93

3.05

25

P

FIRST

LAST

1 2 3

4

TRUE atau FALSE Kondisi berikut ini

if( P == FIRST )

if( FIRST == LAST )

if( FIRST->LINK == LAST->LINK )

if( FIRST->INFO = 25 )