• Tidak ada hasil yang ditemukan

Linked List 6.3 & 7.3 NESTED LOOP

N/A
N/A
Protected

Academic year: 2021

Membagikan "Linked List 6.3 & 7.3 NESTED LOOP"

Copied!
93
0
0

Teks penuh

(1)

1

6.3 & 7.3

NESTED LOOP

(2)

Linked List

(

List yang di-Link

satu dengan

lainnya

)

(3)

3

apa itu

List

?

(4)

Contoh sebuah LIST

int A[5];

0 1 2 3 4

Array satu dimensi

Disebut juga :

Vector

(5)

5

int A[5];

0 1 2 3 4

biasa diilustrasikan sebagai berikut :

Kadang-kadang diilustrasikan

sebagai berikut :

0 1 2 3 4

(6)

0 1 2 3 4

int A[5];

A[0]

List dengan 5 elemen

(7)

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

(8)
(9)

9

Alamat atau Address

adalah nomor Byte

RAM 64 MB

0 1 2 3 4

(10)

dengan:

int A;

terbentuk sebuah variabel (Elemen) sebesar 2 Byte

2 BYTE

Nomor BYTE pertama (paling kiri) - sering disebut MSB -

(11)

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

(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,

setiap elemen

mempunyai tipe data tersendiri

(13)

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

(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

(15)

15

Contoh 4 buah simpul Linked List dalam memory 25 12 17 10 (1) (2) (3) (4)

(16)

Proses pembuatan

Simpul

dan pembuatan

Link

sampai terbentuk

(17)

17

Perhatikan memory berikut ini :

(18)

Akan dibuat sebuah Simpul Awal

(simpul pertama)

(19)

19

Simpul pertama (1) sudah dibuat

misal alamatnya = H1000

H1000

INFO LINK

(1)

(20)

H1000

INFO LINK

Kemudian INFO akan diisi

dengan nilai 25

(21)

21

25

H1000

INFO LINK

INFO simpul pertama (1) sudah diisi dengan nilai 25

(1)

(22)

25

Misal akan dibuat

sebuah simpul baru (simpul kedua)

H1000

INFO LINK

(23)

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

(24)

25

H1000

INFO LINK

H0800

INFO LINK

INFO simpul kedua (2) akan diisi dengan 12

(1)

(25)

25

25

H1000

INFO LINK

INFO simpul kedua (2)

sudah diisi dengan nilai 12

12

H0800

INFO LINK

(1)

(26)

25

H1000

INFO LINK

Akan di-

link

simpul pertama (1)

dengan simpul kedua (2)

12

H0800

INFO LINK

(1)

(27)

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

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

(29)

29

25

0800 H1000 INFO LINK

12

H0800 INFO LINK (1) (2)

Kemudian : Akan dibuat simpul (3), dan

(30)

25

0800 H1000 INFO LINK

12

H0800 INFO LINK (1) (2) Sudah dibuat simpul ketiga (3) Misal alamatnya = H1400

17

(31)

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

(32)

25

0800 H1000 INFO LINK

12

1400 H0800 INFO LINK (1) (2) Simpul kedua (2) sudah di-link

dengan simpul ketiga (3)

17

(33)

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

(34)

25

0800 H1000 INFO LINK

12

1400 H0800 INFO LINK (1) (2)

17

1100 INFO LINK

10

H1100 INFO LINK (4) Sekarang sudah tercipta 4 buah simpul,

dan sudah ter-link satu dengan lainnya, sehingga membentuk sebuah Linked List

(35)

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 :

(36)

25

0800 H1000 INFO LINK

12

1400 H0800 INFO LINK (1) (2)

17

1100 INFO LINK

10

H1100 INFO LINK (4)

Link dalam bentuk angka alamat tidak diperlukan lagi

(37)

37

25

H1000 INFO LINK

12

H0800 INFO LINK (1) (2)

17

H1400 INFO LINK (3)

10

H1100 INFO LINK (4)

(38)

25

H1000 INFO LINK

12

H0800 INFO LINK (1) (2)

17

INFO LINK

10

H1100 INFO LINK (4)

Alamat sebuah simpul, sebenarnya, tidak perlu diketahui atau dinyatakan

(39)

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,

(40)

25

INF O LINK

12

(1) (2)

17

(3)

10

(4) Linked List empat buah simpul ini

dapat disederhanakan gambarnya menjadi :

INF O LINK INF O LINK INF O LINK

(41)

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 :

(42)

3. 01

I.

LINEAR SINGLY LINKED LIST

II.

LINEAR DOUBLY LINKED LIST

III.

CIRCULAR SINGLY LINKED LIST

(43)

43

3. 01

I. LINEAR SINGLY LINKED LIST

25 FIRST

12 17 10

LAST

II. LINEAR DOUBLY LINKED LIST

25 FIRST

12 17 10

(44)

3. 01

III. CIRCULAR SINGLY LINKED LIST

25 FIRST

12 17 10

LAST

IV. CIRCULAR DOUBLY LINKED LIST

(45)

45

3. 02

LINKED LIST LURUS

(46)

3. 02

1.1. ILUSTRASI

LINEAR SINGLY LINKED LIST

25 FIRST 12 17 10 LAST (1) (2) (3) (4) FIRST LAST atau

(47)

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

(48)

3. 02

INSERT :

Masuk, Simpan, Tulis

(49)

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,

(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

25 FIRST

12 17 10

LAST

(51)

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

(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

(53)

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.

(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

;

};

(55)

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.

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

(57)

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 :

(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

(59)

59

3. 04

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

malloc :

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

(60)

3. 04

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

21C8

INFO LINK

(61)

61 3. 04 21C8 P INFO LINK H21C8

P

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

(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;

(63)

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

(64)

3. 04

P->INFO = X;

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)

(65)

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

(66)

3. 04

25

\0

P

Nilai pointer yang berisi NULL

sering diilustrasikan sebagai panah „ground‟ sebagai berikut :

25

P

(67)

67

3.05

Perhatikan kembali LINEAR SINGLY LINKED LIST

yang akan dibuat sebagai yang diilustrasikan berikut ini :

25

FIRST

12 17 10

LAST

(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

(69)

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

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

(71)

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 :

(72)

3.05

P

1000

P FIRST LAST X

(73)

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

(74)

3.05

P

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

(75)

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

(76)

3.05

P

1000 P FIRST LAST X

25

1000

(77)

77

3.05

25

P

Field ini namanya :

Field ini namanya : P->LINK

P->INFO

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

(78)

25

FIRST

12 17 10

LAST

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

Simpul pertama selalu ditunjuk Oleh pointer FIRST

(79)

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

(80)

3.05 P 1000 1000 P FIRST LAST X

25

1000 FIRST

(81)

81

3.05

25

FIRST

Field ini namanya :

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

(82)

25 FIRST

12 17 10

LAST

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

Simpul terakhir selalu ditunjuk Oleh pointer LAST

(83)

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

(84)

3.05 1000 1000 1000 P FIRST LAST X

25

1000 FIRST LAST

(85)

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

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

P

FIRST LAST

(87)

87 3.05

25

P 1000 1000 1000 P FIRST LAST X

25

1000 FIRST LAST

Sudah terbentuk sebuah Simpul awal

(88)

3.05

LATIHAN

DI

(89)

89 3.05

25

P

FIRST LAST

(90)

3.05

25

P

FIRST LAST

(91)

91 3.05

25

P

FIRST LAST

Pertanyaan : Ada berapa buah pointer yang terlihat - Apa nama masing-masing pointer - Apa isi masing-masing pointer

(92)

3.05

25

P

FIRST LAST 1 2 3 4

Jawab : Ada 4 buah pointer

1 2

No Nama Isi Pointer Pointer pointer

P &(1) FIRST &(1)

(93)

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 )

Gambar

Ilustrasi sebuah Simpul (Vertex, atau Node,  atau Record)
Ilustrasi fisik dalam memory diatas,  dapat digambarkan dengan ilustrasi  diagram sebagai berikut :

Referensi

Dokumen terkait

Namun secara umum apabila efektivitas kinerja tersebut dikaitkan dengan kegiatan pelayanan jasa, suatu kinerja layanan akan dikatakan efektif jika pelanggan merasa puas

Otitis media akut dapat dise#a#kan invasi virus Campak ke dalam telin$a ten$a!% Gendan$ telin$a #iasana !peremia pada fase prodormal dan stadium erupsi% 4ika terjadi invasi

positi untuk (at bermuatan negati !anoda#. 3lektrolit dalam jam lemon bertenaga adalah asam sitrat. erakan elektron dimulai ketika lapisan seng pada salah satu paku

Kegiatan ini dilakukan secara langsung dengan menerapkan protokol kesehatan dengan mengenakan masker, kegiatan ini dilaksanakan di Desa Tanggulangin untuk keperluan

Ide dalam penelitian ini berawal dari Sistem Informasi Sinode Wilayah GKI (SISWA GKI) yang akan menggunakan banyak platform pada sistem tersebut, seperti web, desktop,

DINA MAIZANA, MT Dr.Ir...

Penulis menyadari banyak pihak yang telah membantu dalam penyusunan makalah ini.. Maka dengan rendah hati, penulis

Melihat keberagaman atraksi yang dimiliki oleh Desa Wisata Pentingsari, penulis melihat bahwa atraksi-atraksi yang dimiliki menjadi daya tarik yang dapat diolah