Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

6.3 & 7.3 NESTED LOOP Linked List DELETE. DELETE : DELETE KIRI DELETE KANAN DELETE TENGAH.

Presentasi serupa


Presentasi berjudul: "6.3 & 7.3 NESTED LOOP Linked List DELETE. DELETE : DELETE KIRI DELETE KANAN DELETE TENGAH."— Transcript presentasi:

1 6.3 & 7.3 NESTED LOOP Linked List DELETE

2 DELETE : DELETE KIRI DELETE KANAN DELETE TENGAH

3 DELETE KIRI Menghapus simpul yang berada pada ujung paling kiri Disebut juga DELETE AWAL

4 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3) (4) 10 FIRST INFO LINK 17 INFO LINK 12 INFO LINK 25 LAST INFO LINK (4)(3) (2) (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

5 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Yang akan dijelaskan, hanya satu macam Linked List, yaitu yang susunannya sebagai berikut :

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

7 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (2) (3)(4) Setelah DELETE KIRI menjadi : (1)(2) (3)

8

9 Instruksi untuk menDELETE sebuah simpul : free( ………. ) Nama pointer yang menunjuk simpul tersebut Contoh : free( Q ); Menghapus simpul yang ditunjuk oleh Pointer Q free( FIRST ); Menghapus simpul yang ditunjuk oleh Pointer FIRST

10 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Kita coba dengan : free(FIRST); menghapus simpul yang ditunjuk oleh pointer FIRST

11 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) dengan : free(FIRST);

12 3.08 FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK dengan : free(FIRST); (2) (3)(4)

13 3.08 FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Simpul beserta dengan isinya dihapus Field INFO berisi : 25 Field LINK berisi : &(2) dengan : free(FIRST); (2) (3)(4)

14

15 FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Kemudian memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi : FIRST = ………………; (2) (3)(4)

16 FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK FIRST = ………………; (2) (3)(4) Kemudian memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi :

17 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi : Karena tak ada pointer yang menunjuk Simpul (2) FIRST (2) (3)(4)

18

19

20 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Bagaimana kalau pointer FIRST Ditempatkan lebih dulu di simpul (2), Baru simpul (1) dihapus 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4)

21

22 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : FIRST = ………………; FIRST

23 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : FIRST = ………………;

24 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : FIRST = FIRST->LINK;

25

26 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Setelah pointer FIRST menunjuk simpul (2), Kemudian barulah simpul (1) dihapus dengan instruksi : free( ……… );

27 FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (2) (3)(4) Setelah pointer FIRST menunjuk simpul (2), Kemudian barulah simpul (1) dihapus dengan instruksi : free( ……… );

28 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Karena tak ada pointer yang menunjuk Simpul (1)

29

30 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (2) (3)(4) Jadi : (1)(2) (3) Bagaimana caranya menghapus simpul (1) Kemudian FIRST menunjuk simpul (2) ?

31

32 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Gunakan pointer pembantu, misal pointer Q 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Q Ditempatkan menunjuk simpul (1) CARA - I :

33

34 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : Q = ; FIRST

35 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : FIRST Q = ; Q

36 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : FIRST Q = FIRST; Q

37

38 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : FIRST Q FIRST = …………………;

39 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : FIRST Q FIRST = …………………;

40 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : FIRST FIRST = Q->LINK; Q

41

42 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Kemudian menghapus Simpul (1) Instruksinya adalah : FIRST free( ……… ); Q

43 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (2) (3)(4) Kemudian menghapus Simpul (1) Instruksinya adalah : FIRST free( ……… ); Q

44 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (2) (3)(4) Kemudian menghapus Simpul (1) Instruksinya adalah : FIRST free( Q ); Q

45

46 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2) (3) Kesimpulan : Untuk menghapus simpul (1) atau DELETE KIRI Diperlukan algoritma : Q = FIRST; FIRST = Q->LINK; free(Q);

47 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2) (3) X = FIRST->INFO; printf(“%i”, X); Q = FIRST; FIRST = Q->LINK; free(Q); Apabila sebelum dihapus nilai INFO (25) Harus dicetak, maka perlu ditambah instruksi menjadi :

48 3.08 PERHATIKAN HASIL LANGKAH SATU PER SATU

49 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Keadaan awal : 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q Hasilnya bila Dikenai instruksi : Q = FIRST; FIRST = Q->LINK; free(Q); 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q

50

51 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Gunakan pointer pembantu, misal pointer Q 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Q ditempatkan menunjuk simpul (2) CARA - 2 :

52

53 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : Q = ; ?

54 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : Q Q = ; ? FIRST

55 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : Q Q = FIRST->LINK; FIRST

56

57 25 INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) Q FIRST free(………… ); Menghapus Simpul (1)

58 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(1) (2)(2)(3)(3) Q FIRST free(………….); Menghapus Simpul (1)

59 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(1) (2)(2)(3)(3) Q FIRST free(FIRST); Menghapus Simpul (1)

60

61 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2)(3) Q Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : FIRST FIRST = ………;

62 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2)(3) Q Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : FIRST FIRST = ………;

63 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2)(3) Q Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : FIRST FIRST = Q ;

64

65 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2)(3) Q FIRST Keadaan akhir setelah DELETE KIRI Biarkan pointer Q tetap menunjuk simpul awal. Pointer Q tidak menggangu. Nanti akan digunakan untuk keperluan berikutnya

66

67 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2) (3) Kesimpulan : Untuk menghapus simpul (1) atau DELETE KIRI Diperlukan algoritma : Q = FIRST->LINK; free(FIRST); FIRST = Q;

68 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1)(2) (3)(4) FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK (1) (2) (3) X = FIRST->INFO; printf(“%i”, X); Q = FIRST->LINK; free(FIRST); FIRST = Q; Apabila sebelum dihapus nilai INFO (25) Harus dicetak, maka perlu ditambah instruksi menjadi :

69 3.08 PERHATIKAN HASIL LANGKAH SATU PER SATU

70 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Keadaan awal : 25 FIRST INFO LINK 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q FIRST 12 INFO LINK 17 INFO LINK 10 LAST INFO LINK Q Hasilnya bila Dikenai instruksi : Q = FIRST->LINK; free(FIRST); FIRST = Q;

71


Download ppt "6.3 & 7.3 NESTED LOOP Linked List DELETE. DELETE : DELETE KIRI DELETE KANAN DELETE TENGAH."

Presentasi serupa


Iklan oleh Google