Linked List 6 3 7 3 NESTED LOOP

  • Slides: 46
Download presentation
Linked List 6. 3 & 7. 3 NESTED LOOP INSERT KIRI 1

Linked List 6. 3 & 7. 3 NESTED LOOP INSERT KIRI 1

3. 08 INSERT KIRI Menambah simpul baru diujung paling kiri Linked List yang sudah

3. 08 INSERT KIRI Menambah simpul baru diujung paling kiri Linked List yang sudah ada Disebut juga INSERT AWAL 2

3. 08 FIRST 25 (5) (1) 12 (2) 17 (3) LINK INFO LAST 10

3. 08 FIRST 25 (5) (1) 12 (2) 17 (3) LINK INFO LAST 10 (4) Kalau sudah ada 4 buah simpul, INSERT KIRI akan menginsert simpul yang baru di buat, diujung paling kiri menjadi simpul no. (5) 3

3. 05 sudah ada simpul awal sebagai berikut : LINK P INFO LAST FIRST

3. 05 sudah ada simpul awal sebagai berikut : LINK P INFO LAST FIRST 25 (1) 4

3. 05 akan dibuat simpul baru yang akan diinsert disini 14 LINK INFO LINK

3. 05 akan dibuat simpul baru yang akan diinsert disini 14 LINK INFO LINK P INFO LAST FIRST 25 (1) Perhatikan pointer P menujuk simpul yang baru, simpul (2) , tidak menunjuk simpul (1) lagi 5

3. 05 sehingga akan ter-link sebagai berikut : 14 25 (2) (1) LINK INFO

3. 05 sehingga akan ter-link sebagai berikut : 14 25 (2) (1) LINK INFO LINK P INFO LAST FIRST 6

3. 05 sehingga akan ter-link sebagai berikut : LAST 14 25 (2) (1) LINK

3. 05 sehingga akan ter-link sebagai berikut : LAST 14 25 (2) (1) LINK INFO LINK P INFO FIRST 7

Instruksi (algoritma) yang diperlukan, bila ditulis dalam sebuah fungsi : 1) 2) 3) 4)

Instruksi (algoritma) yang diperlukan, bila ditulis dalam sebuah fungsi : 1) 2) 3) 4) 3. 05 void Insert. Kiri (void) { int X; scanf(“%i”, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST; FIRST = P; } Ada 4 instruksi pokok 8

3. 05 Hasil instruksi satu per satu 9

3. 05 Hasil instruksi satu per satu 9

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 1) 3. 05 P=(Simpul*)malloc(sizeof(Simpul));

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 1) 3. 05 P=(Simpul*)malloc(sizeof(Simpul)); LAST LINK INFO P LINK FIRST INFO 1) 2) 3) 4) 25 (2) Pointer P sudah menunjuk simpul no(2), tidak lagi menunjuk simpul (1) 10

INFO LINK Sudad ada satu buah simpul awal 25 � 1000 P FIRST 1000

INFO LINK Sudad ada satu buah simpul awal 25 1000 P FIRST 1000 LAST X 1000 11

LINK � LINK INFO 25 800 misal alamat simpul baru = 800 1000 P

LINK LINK INFO 25 800 misal alamat simpul baru = 800 1000 P FIRST 800 1000 LAST X 1000 12

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 2) 3. 05 P->INFO

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 2) 3. 05 P->INFO = X; LAST 12 25 (2) (1) misal X hasil input = 12 LINK INFO P LINK FIRST INFO 1) 2) 3) 4) 13

LINK INFO 25 LINK INFO 12 800 Misal nilai X = 12 � 1000

LINK INFO 25 LINK INFO 12 800 Misal nilai X = 12 1000 P FIRST 800 1000 LAST X 1000 12 14

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 3) 3. 05 P->LINK

P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST = P; instruksi 3) 3. 05 P->LINK = FIRST; LAST 14 25 (2) (1) LINK INFO P LINK FIRST INFO 1) 2) 3) 4) 15

INFO LINK 25 � INFO LINK 14 1000 800 1000 P FIRST 800 1000

INFO LINK 25 INFO LINK 14 1000 800 1000 P FIRST 800 1000 LAST X 1000 14 16

LAST 3. 05 14 25 (2) (1) LINK INFO LINK P INFO FIRST Ada

LAST 3. 05 14 25 (2) (1) LINK INFO LINK P INFO FIRST Ada 2 pointer yang menunjuk simpul ini yaitu : FIRST, dan LAST Jadi untuk meng-link simpul (2) dengan simpul (1), dapat ditulis dengan salah satu dari 2 instruksi berikut ini: P->LINK = LAST; atau P->LINK = FIRST; 17

14 25 (2) (1) LINK INFO LINK P INFO LAST FIRST Untuk meng-Link simpul

14 25 (2) (1) LINK INFO LINK P INFO LAST FIRST Untuk meng-Link simpul (2) Dengan simpul (1) Mana yang benar : P->LINK = FIRST; atau P->LINK = LAST; 18

14 25 (2) (1) LINK INFO LINK P INFO LAST FIRST Untuk meng-Link simpul

14 25 (2) (1) LINK INFO LINK P INFO LAST FIRST Untuk meng-Link simpul (2) Dengan simpul (1) Sekarang ini, baik : P->LINK = FIRST; atau P->LINK = LAST; Sama sama benar (SEKARANG INI) 19

14 (5) 25 (1) 12 (2) (3) LINK 17 INFO LAST INFO LINK INFO

14 (5) 25 (1) 12 (2) (3) LINK 17 INFO LAST INFO LINK INFO FIRST LINK INFO P 10 (4) Yang menunjuk simpul ini adalah pointer : FIRST Sehingga bila simpul yang sudah ada lebih dari satu simpul (misal empat simpul) maka instruksi yang benar adalah : P->LINK = FIRST; 20

3. 08 FIRST 25 (1) 12 (2) 17 (3 LINK INFO LAST 10 (4)

3. 08 FIRST 25 (1) 12 (2) 17 (3 LINK INFO LAST 10 (4) Pointer paling kiri selalu ditunjuk oleh pointer FIRST 21

3. 05 14 FIRST = P; LINK INFO instruksi 4) LINK P INFO P=(Simpul*)malloc(sizeof(Simpul));

3. 05 14 FIRST = P; LINK INFO instruksi 4) LINK P INFO P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; LAST P->LINK = FIRST = P; 25 (1) FIRST 14 LINK INFO LINK P LAST INFO 1) 2) 3) 4) 25 (1) 22

INFO LINK 25 � INFO LINK 14 1000 800 1000 P FIRST 800 LAST

INFO LINK 25 INFO LINK 14 1000 800 1000 P FIRST 800 LAST X 1000 14 23

FIRST 14 (2) LINK INFO P 3. 05 LAST 25 (1) Setelah simpul baru

FIRST 14 (2) LINK INFO P 3. 05 LAST 25 (1) Setelah simpul baru telah tersambung Maka simpul ini menjadi Simpul no. (1). 24

FIRST 14 (1) LINK INFO P 3. 05 LAST 25 (2) 25

FIRST 14 (1) LINK INFO P 3. 05 LAST 25 (2) 25

3. 05 LATIHAN DI KELAS 26

3. 05 LATIHAN DI KELAS 26

FIRST 14 LINK 25 (1) Pertanyaan : INFO LINK INFO P 3. 05 LAST

FIRST 14 LINK 25 (1) Pertanyaan : INFO LINK INFO P 3. 05 LAST (2) Ada berapa buah simpul yang terlihat Ada berapa buah pointer yang terlihat - Apa nama masing-masing pointer - Apa isi masing-masing pointer 27

FIRST 14 (1) No Pointer Nama Pointer 4 LINK 3 INFO 1 LINK P

FIRST 14 (1) No Pointer Nama Pointer 4 LINK 3 INFO 1 LINK P INFO 2 3. 05 LAST 25 (2) 5 Isi pointer 1 2 3 4 5 28

FIRST 12 (1) No Pointer 4 Nama Pointer LINK 3 INFO 1 LINK P

FIRST 12 (1) No Pointer 4 Nama Pointer LINK 3 INFO 1 LINK P INFO 2 3. 05 LAST 25 (2) 5 Isi pointer 1 P &(1) 2 FIRST &(1) 3 LAST &(2) 4 P->LINK, atau FIRST->LINK &(2) 5 LAST->LINK atau P->LINK atau FIRST->LINK NULL 29

FIRST 14 (1) 4 LINK 3 INFO LINK 1 INFO 2 P 3. 05

FIRST 14 (1) 4 LINK 3 INFO LINK 1 INFO 2 P 3. 05 LAST 25 (2) 5 Sebutkan pointer mana saja yang nilainya sama 30

FIRST 12 (2) 4 LINK 3 INFO LINK 1 INFO 2 P 3. 05

FIRST 12 (2) 4 LINK 3 INFO LINK 1 INFO 2 P 3. 05 LAST 25 (1) 5 TRUE atau FALSE Kondisi berikut ini if( P->LINK == LAST ) if( LAST->LINK == FIRST->LINK ) 31

Linked List 6. 3 & 7. 3 NESTED LOOP INSERT TENGAH 32

Linked List 6. 3 & 7. 3 NESTED LOOP INSERT TENGAH 32

3. 08 INSERT TENGAH Menyisipkan simpul baru diantara dua buah simpul pada sebuah Linked

3. 08 INSERT TENGAH Menyisipkan simpul baru diantara dua buah simpul pada sebuah Linked List yang sudah ada 33

LINK INFO (8) P . . . 20 (7) 22 (7) INFO LINK 14

LINK INFO (8) P . . . 20 (7) 22 (7) INFO LINK 14 INFO Q LINK INFO LINK 22 LINK . . . 3. 08 14 INFO Q INFO P 20 . . . (8) 34

22 (7) LINK INFO a b INFO LINK INFO 14 LINK . . .

22 (7) LINK INFO a b INFO LINK INFO 14 LINK . . . (8) LINK P . . . 20 a (7) Q LINK 22 INFO . . . 3. 08 14 INFO Q INFO P 20 . . . (8) 35

Q 22 (7) LINK P a b LINK a INFO (7) LINK 22 INFO

Q 22 (7) LINK P a b LINK a INFO (7) LINK 22 INFO LINK INFO Q INFO LINK INFO P 14 20 (8) 14 a b b a 20 (8) 36

Q 22 (7) LINK P a b LINK a INFO (7) LINK 22 INFO

Q 22 (7) LINK P a b LINK a INFO (7) LINK 22 INFO LINK INFO Q INFO LINK INFO P 14 20 (8) 14 a b b a 20 (8) 37

20 (8) 22 (7) II LINK b INFO LINK INFO 14 a I a

20 (8) 22 (7) II LINK b INFO LINK INFO 14 a I a Q->LINK = P; b P->LINK = Q->LINK; a Q->LINK = P; LINK P INFO a (7) LINK INFO LINK 22 Q LINK 14 INFO Q INFO P 20 (8) 38

. . . LINK 3. 08 22 a (7) I LINK INFO 14 INFO

. . . LINK 3. 08 22 a (7) I LINK INFO 14 INFO Q INFO P 20 a Q->LINK = P; b P->LINK = Q->LINK; . . . (8) 39

14 22 (8) P 22 (7) LINK a INFO 14 LINK Q->LINK = P;

14 22 (8) P 22 (7) LINK a INFO 14 LINK Q->LINK = P; INFO Dengan : 20 a (7) LINK INFO Q LINK P->LINK = Q->LINK; INFO P INFO b Q->LINK = P; LINK a INFO I 20 (8) 40

14 a 22 20 (7) P->LINK = Q->LINK; P 22 (7) a LINK b

14 a 22 20 (7) P->LINK = Q->LINK; P 22 (7) a LINK b INFO LINK 14 INFO Q LINK (8) INFO Dengan : LINK INFO Q LINK P->LINK = Q->LINK; INFO b P Q->LINK = P; LINK a INFO I 20 (8) 41

14 a 22 20 (7) P->LINK = Q->LINK; P 22 (7) a LINK b

14 a 22 20 (7) P->LINK = Q->LINK; P 22 (7) a LINK b INFO LINK 14 INFO Q LINK (8) INFO Dengan : LINK INFO Q LINK P->LINK = Q->LINK; INFO b P Q->LINK = P; LINK a INFO I 20 (8) 42

. . . LINK 3. 08 22 a (7) II LINK INFO 14 INFO

. . . LINK 3. 08 22 a (7) II LINK INFO 14 INFO Q INFO P 20 b P->LINK = Q->LINK; a Q->LINK = P; . . . (8) 43

Q->LINK = P; LINK 14 22 20 a (7) LINK INFO Q INFO a

Q->LINK = P; LINK 14 22 20 a (7) LINK INFO Q INFO a P P->LINK = Q->LINK; LINK b INFO II (8) 22 (7) LINK b INFO LINK a 14 INFO Q LINK P INFO Dengan : P->LINK = Q->LINK; 20 a (8) 44

Q->LINK = P; LINK 14 22 20 a (7) LINK b INFO Q INFO

Q->LINK = P; LINK 14 22 20 a (7) LINK b INFO Q INFO a P P->LINK = Q->LINK; LINK b INFO II (8) 22 (7) a b LINK (8) INFO LINK 14 INFO Q LINK P INFO Dengan : Q->LINK = P; 20 (8) (9) 45

Algoritma untuk : INSERT TENGAH Bila pointer Q sudah menunjuk simpul Yang disebelah kiri

Algoritma untuk : INSERT TENGAH Bila pointer Q sudah menunjuk simpul Yang disebelah kiri : Q->LINK = P; P->LINK = Q->LINK; 46