Linked List 6 3 7 3 NESTED LOOP

  • Slides: 19
Download presentation
Linked List 6. 3 & 7. 3 NESTED LOOP DELETE TENGAH 1

Linked List 6. 3 & 7. 3 NESTED LOOP DELETE TENGAH 1

DELETE TENGAH Menghapus simpul yang berada diantara dua buah simpul 2

DELETE TENGAH Menghapus simpul yang berada diantara dua buah simpul 2

. . 22 14 (7) (8) LINK INFO Q 20 . . (9) .

. . 22 14 (7) (8) LINK INFO Q 20 . . (9) . . 22 (7) LINK INFO Sudah ada Linear Singly Linked List. Jumlah simpul lebih dari 10. Simpul pertama ada diujung paling kiri, ditunjuk oleh pointer FIRST, dan simpul terakhir ada diujung paling kanan ditunjuk oleh pointer LAST. Link ssimpul terakhir nilainya NULL. Bila simpul (7) sudah ditunjuk oleh pointer Q, maka susun algoritma untuk menghapus simpul no (8) sedemikian rupa sehingga simpul no (7) terhubung dengan simpul no (9), sebagai ilustrasi berikut : Q 20 . . (9) (8) 3

22 . . 14 (7) (8) LINK INFO Q 20 . . (9) Dalam

22 . . 14 (7) (8) LINK INFO Q 20 . . (9) Dalam keadaan seperti ini simpul no (8) dapat dihapus atau di. DELETE dengan instruksi : ? free(. . . . ) Sehingga hasilnya menjadi : . . 22 (7) LINK INFO Q 20 . . (9) (8) 4

22 . . 14 (7) (8) LINK INFO Q 20 . . (9) Dalam

22 . . 14 (7) (8) LINK INFO Q 20 . . (9) Dalam keadaan seperti ini simpul no (8) dapat dihapus atau di. DELETE dengan instruksi : free( Q->LINK ); Sehingga hasilnya menjadi : . . 22 (7) LINK INFO Q 20 . . (9) (8) 5

. . 22 LINK INFO Q . . 20 (7) (8) Dalam keadaan seperti

. . 22 LINK INFO Q . . 20 (7) (8) Dalam keadaan seperti ini untuk menghubungkan simpul (7) dengen simpul (8) atau dengan perkataan lain , agar Q->LINK menunjuk simpul (8) dapat dilakukan dengan instruksi : Q->LINK =. . . . ; Sehingga hasilnya menjadi : . . 22 (7) LINK INFO Q 20 . . (9) (8) 6

. . 22 (7) LINK INFO Q 20 . . (8) Dalam keadaan seperti

. . 22 (7) LINK INFO Q 20 . . (8) Dalam keadaan seperti ini untuk menghubungkan simpul (7) dengen simpul (8) atau dengan perkataan lain , agar Q->LINK menunjuk simpul (8) dapat dilakukan dengan instruksi : Q->LINK =. . . . ; Q->LINK Tidak dapat menunjuk simpul (8) karena tidak ada pointer yang sedang menunjuk simpul (8) Sehingga menghapus simpul TENGAH gagal 7

22 . . 14 (7) LINK INFO Q 20 (8) . . (9) .

22 . . 14 (7) LINK INFO Q 20 (8) . . (9) . . 22 (7) (8) LINK Q INFO (7) LINK INFO 20 . . (9) LINK 14 INFO 22 . . INFO LINK Q INFO Bagaimana kalau simpul (7) dihubungkan lebih dulu dengan simpul (9) , kemudian mengapus simpul (8) sebagai ilustrasi berikut ? . . 20 (9) (8) 8

. . 22 14 (7) LINK INFO Q 20 (8) . . (9) .

. . 22 14 (7) LINK INFO Q 20 (8) . . (9) . . 22 (7) 14 (8) 20 LINK INFO Dalam keadaan seperti ini, untuk menghubungkan simpul (7) dengan simpul (9), dengan perkataan lain agar Q->LINK menunjuk simpul (9), tidak lagi menunjuk simpul (8) sehingga ilustrasinya menjadi sebagai berikut: Q . . (9) Dapat dilakukan dengan instruksi : ? Q->LINK =. . . . ; 9

. . 22 14 (7) LINK INFO Q 20 (8) . . (9) .

. . 22 14 (7) LINK INFO Q 20 (8) . . (9) . . 22 (7) 14 (8) LINK INFO Dalam keadaan seperti ini, untuk menghubungkan simpul (7) dengan simpul (9), dengan perkataan lain agar Q->LINK menunjuk simpul (9), tidak lagi menunjuk simpul (8) sehingga ilustrasinya menjadi sebagai berikut: Q 20 . . (9) Dapat dilakukan dengan instruksi : Q->LINK = Q->LINK ; 10

22 . . 14 (7) LINK INFO Q 20 (8) . . (9) .

22 . . 14 (7) LINK INFO Q 20 (8) . . (9) . . 22 LINK INFO LINK Q INFO Dalam keadaan seperti ini, untuk menghapus atau men. DELETE simpul no(8), sehingga ilustrasinya menjadi sebagai berikut: 20 (7) . . (9) (8) Dapat dilakukan dengan instruksi : free( . . ? . . . ) ; 11

. . 22 (7) 14 (8) 20 LINK INFO Q . . (9) Dalam

. . 22 (7) 14 (8) 20 LINK INFO Q . . (9) Dalam keadaan seperti ini, simpul (8) tidak dapat dihapus atau di. DELETE karena tidak ada pointer yang menunjuk simpul (8) Sehingga DELETE TENGAH tidak dapat dilakukan dengan cara seperti ini Sehingga diperlukan cara lain 12

22 . . 14 (7) (8) LINK INFO KESIMPULAN-1: Q 20 . . (9)

22 . . 14 (7) (8) LINK INFO KESIMPULAN-1: Q 20 . . (9) . . 22 (7) LINK INFO Q 20 . . (9) (8) Dengan Cara-1. Bisa menghapus simpul (8), Tapi tidak bisa menghubungkan simpul (7) dan simpul (9) 13

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

. . 22 (7) LINK . . 14 (8) 20 LINK (9) LINK INFO 20 (8) LINK INFO (7) Q LINK 14 INFO 22 . . INFO LINK INFO KESIMPULAN-2: Q . . (9) Dengan Cara-2. Bisa menghubungkan simpul (7) dan simpul (9), Tapi tidak bisa menghapus simpul (8) 14

DIPERLUKAN CARA LAIN 15

DIPERLUKAN CARA LAIN 15

14 (8) Q->LINK =. . . ; 22 (7) . . (9) R LINK

14 (8) Q->LINK =. . . ; 22 (7) . . (9) R LINK Q (8) INFO LINK 20 (7) free(. . . ); Ketiga, Menghubungkan simpul (7) dengan simpul (9) dengan. . instruksi : R 22 INFO Kedua, Menghapus simpul (8) dengan instruksi. : . . . . (9) R =. . . ; Q LINK 20 LINK (7) INFO LINK R INFO 22 INFO Q LINK Pertama, menempatkan pointer baru misal pointer R di simpul (9) Dengan instruksi : . . INFO Cara-1. 20 . . (9) 16

14 (8) Q->LINK = R; 22 (7) . . (9) R LINK Q (8)

14 (8) Q->LINK = R; 22 (7) . . (9) R LINK Q (8) INFO LINK 20 (7) free(Q->LINK); Ketiga, Menghubungkan simpul (7) dengan simpul (9) dengan. . instruksi : R 22 INFO Kedua, Menghapus simpul (8) dengan instruksi. : . . . . (9) R = Q->LINK; Q LINK 20 LINK (7) INFO LINK R INFO 22 INFO Q LINK Pertama, menempatkan pointer baru misal pointer R di simpul (9) Dengan instruksi : . . INFO Cara-1. 20 . . (9) 17

20 (8) (7) INFO LINK 20 (8) LINK INFO Q R 14 (7) 22

20 (8) (7) INFO LINK 20 (8) LINK INFO Q R 14 (7) 22 free (. . . ); LINK 22 Q->LINK =. . ; Ketiga, Menghapus simpul (8) dengan instruksi : INFO Q LINK (9) R =. . . ; Kedua, Menghubungkan simpul(7) dengan simpul (9) dengan instruksi : . . . . (9) R LINK (7) LINK INFO 14 INFO 22 LINK R INFO Q LINK Pertama, menempatkan pointer baru misal pointer R di simpul (8) Dengan instruksi : INFO Cara-2. 20 . . (9) 18

14 (8) (7) R LINK INFO LINK 20 . . (9) LINK INFO Q

14 (8) (7) R LINK INFO LINK 20 . . (9) LINK INFO Q (8) LINK INFO 14 (7) 22 free ( R ); R 22 Q->LINK = R->LINK; Ketiga, Menghapus simpul (8) dengan instruksi : LINK Q INFO R = Q->LINK; Kedua, Menghubungkan simpul(7) dengan simpul (9) dengan instruksi : . . (9) INFO (7) 20 INFO 22 LINK R INFO Q LINK Pertama, menempatkan pointer baru misal pointer R di simpul (8) Dengan instruksi : INFO Cara-2. 20 . . (9) 19