Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehIan Rahmadi Telah diubah "9 tahun yang lalu
1
Linked List DELETE 6.3 & 7.3 NESTED LOOP
2
DELETE : DELETE KIRI DELETE KANAN DELETE TENGAH
3
Menghapus simpul yang berada pada ujung paling kiri
DELETE KIRI Menghapus simpul yang berada pada ujung paling kiri Disebut juga DELETE AWAL
4
Mana yang mengikuti prinsip STACK, dan
FIRST LAST Ilustrasi-1 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 Urutan insert (1) (2) (3) (4) Urutan delete (1) (2) (3) (4) LAST FIRST INFO LINK INFO LINK INFO LINK INFO LINK Ilustrasi-2 10 17 12 25 Urutan insert (4) (3) (2) (1) Urutan delete (1) (2) (3) (4) Pertanyaan : Mana yang mengikuti prinsip STACK, dan mana yang mengikuti prinsip QUEUE, Linked List ilustrasi-1 atau Linked List ilustrasi-2
5
Yang akan dijelaskan, hanya satu macam Linked List, yaitu yang susunannya sebagai berikut :
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4)
6
FIRST LAST 25 12 17 10 (1) (2) (3) (4) INFO LINK INFO LINK INFO LINK
7
Setelah DELETE KIRI menjadi :
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Setelah DELETE KIRI menjadi : FIRST LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) (1) (2) (3)
9
free( ………. ) free( Q ); free( FIRST );
Instruksi untuk menDELETE sebuah simpul : free( ………. ) Nama pointer yang menunjuk simpul tersebut free( Q ); Contoh : Menghapus simpul yang ditunjuk oleh Pointer Q free( FIRST ); Menghapus simpul yang ditunjuk oleh Pointer FIRST
10
menghapus simpul yang ditunjuk oleh pointer FIRST
LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Kita coba dengan : free(FIRST); menghapus simpul yang ditunjuk oleh pointer FIRST
11
dengan : free(FIRST); FIRST LAST 3.08 25 12 17 10 (1) (2) (3) (4) INFO
LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) dengan : free(FIRST);
12
dengan : free(FIRST); FIRST LAST 3.08 12 17 10 (2) (3) (4) INFO LINK
13
dengan : free(FIRST); Simpul beserta dengan isinya dihapus FIRST LAST
3.08 INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) dengan : free(FIRST); Simpul beserta dengan isinya dihapus Field INFO berisi : 25 Field LINK berisi : &(2)
15
? FIRST = ………………; Kemudian memindahkan Pointer FIRST
LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Kemudian memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi : ? FIRST = ………………;
16
? FIRST = ………………; Kemudian memindahkan Pointer FIRST
LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Kemudian memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi : ? FIRST = ………………;
17
Tidak bisa Karena tak ada pointer yang menunjuk Simpul (2)
FIRST LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Memindahkan Pointer FIRST Agar menunjuk simpul (2) Instruksi : Tidak bisa Karena tak ada pointer yang menunjuk Simpul (2)
18
Gagal
20
Bagaimana kalau pointer FIRST Ditempatkan lebih dulu di simpul (2),
LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Bagaimana kalau pointer FIRST Ditempatkan lebih dulu di simpul (2), Baru simpul (1) dihapus FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4)
22
? FIRST = ………………; Memindahkan Pointer FIRST
LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : ? FIRST = ………………;
23
? FIRST = ………………; Memindahkan Pointer FIRST
LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : ? FIRST = ………………;
24
FIRST = FIRST->LINK;
LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Memindahkan Pointer FIRST Sehingga menunjuk simpul no (2) Instruksinya : FIRST = FIRST->LINK;
26
? free( ……… ); Setelah pointer FIRST menunjuk simpul (2),
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Setelah pointer FIRST menunjuk simpul (2), Kemudian barulah simpul (1) dihapus dengan instruksi : ? free( ……… );
27
? free( ……… ); Setelah pointer FIRST menunjuk simpul (2),
LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Setelah pointer FIRST menunjuk simpul (2), Kemudian barulah simpul (1) dihapus dengan instruksi : ? free( ……… );
28
Tidak bisa Karena tak ada pointer yang menunjuk Simpul (1) FIRST LAST
INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Tidak bisa Karena tak ada pointer yang menunjuk Simpul (1)
29
Gagal
30
Bagaimana caranya menghapus simpul (1)
FIRST LAST 3.08 INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Jadi : Bagaimana caranya menghapus simpul (1) Kemudian FIRST menunjuk simpul (2) ? FIRST LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) (1) (2) (3)
31
cari cara lain
32
Gunakan pointer pembantu, misal pointer Q
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Gunakan pointer pembantu, misal pointer Q CARA - I : Ditempatkan menunjuk simpul (1) Q FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4)
34
? Q = ; Instruksi menempatkan pointer Q agar menunjuk simpul (1)
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : ? Q = ;
35
? Q Q = ; Instruksi menempatkan pointer Q agar menunjuk simpul (1)
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : ? Q = ;
36
Q Q = FIRST; Instruksi menempatkan pointer Q agar menunjuk simpul (1)
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (1) adalah : Q = FIRST;
38
? Q FIRST = …………………; Instruksi memindahkan pointer FIRST
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : ? FIRST = …………………;
39
? Q FIRST = …………………; Instruksi memindahkan pointer FIRST
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : ? FIRST = …………………;
40
Q FIRST = Q->LINK; Instruksi memindahkan pointer FIRST
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi memindahkan pointer FIRST agar menunjuk simpul (2) adalah : FIRST = Q->LINK;
42
? Q free( ……… ); Kemudian menghapus Simpul (1) Instruksinya adalah :
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Kemudian menghapus Simpul (1) Instruksinya adalah : ? free( ……… );
43
? Q free( ……… ); Kemudian menghapus Simpul (1) Instruksinya adalah :
FIRST LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Kemudian menghapus Simpul (1) Instruksinya adalah : ? free( ……… );
44
Q free( Q ); Kemudian menghapus Simpul (1) Instruksinya adalah : FIRST
LAST INFO LINK INFO LINK INFO LINK 12 17 10 (2) (3) (4) Kemudian menghapus Simpul (1) Instruksinya adalah : free( Q );
46
Q = FIRST; FIRST = Q->LINK; free(Q); FIRST LAST 25 12 17 10 (1) (2)
INFO LINK INFO INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) FIRST LAST LINK INFO INFO LINK INFO LINK 12 17 10 (1) (2) (3) Kesimpulan : Untuk menghapus simpul (1) atau DELETE KIRI Diperlukan algoritma : Q = FIRST; FIRST = Q->LINK; free(Q);
47
X = FIRST->INFO; printf(“%i”, X); Q = FIRST; FIRST = Q->LINK;
LAST 3.08 LINK INFO LINK INFO INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) FIRST LAST LINK INFO INFO LINK INFO LINK 12 17 10 (1) (2) (3) Apabila sebelum dihapus nilai INFO (25) Harus dicetak, maka perlu ditambah instruksi menjadi : X = FIRST->INFO; printf(“%i”, X); Q = FIRST; FIRST = Q->LINK; free(Q);
48
HASIL LANGKAH SATU PER SATU
3.08 PERHATIKAN HASIL LANGKAH SATU PER SATU
49
Keadaan awal : Q = FIRST; FIRST = Q->LINK; free(Q); 25 12 17 10 Q
LAST INFO LINK INFO LINK INFO LINK INFO LINK Keadaan awal : 25 12 17 10 Q Hasilnya bila Dikenai instruksi : FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK Q = FIRST; 25 12 17 10 Q FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK FIRST = Q->LINK; 25 12 17 10 Q FIRST LAST free(Q); INFO LINK INFO LINK INFO LINK 12 17 10
50
cara-2
51
Gunakan pointer pembantu, misal pointer Q
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Gunakan pointer pembantu, misal pointer Q CARA - 2 : ditempatkan menunjuk simpul (2) FIRST Q LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4)
53
? Q = .......; Instruksi menempatkan pointer Q
FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : ? Q = ;
54
? Q = .......; Instruksi menempatkan pointer Q
FIRST Q LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : ? Q = ;
55
Q = FIRST->LINK; Instruksi menempatkan pointer Q
LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Instruksi menempatkan pointer Q agar menunjuk simpul (2) adalah : Q = FIRST->LINK;
57
? free(………… ); Menghapus Simpul (1) FIRST Q LAST 25 12 17 10 (1) (2)
INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) Menghapus Simpul (1) ? free(………… );
58
? free(………….); Menghapus Simpul (1) FIRST Q LAST 12 17 10 (1) (2) (3)
INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Menghapus Simpul (1) ? free(………….);
59
free(FIRST); Menghapus Simpul (1) FIRST Q LAST 12 17 10 (1) (2) (3)
INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Menghapus Simpul (1) free(FIRST);
61
? FIRST = ………; Kemudian pindahkan pointer FIRST
Q LAST INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : ? FIRST = ………;
62
? FIRST = ………; Kemudian pindahkan pointer FIRST
Q LAST INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : ? FIRST = ………;
63
FIRST = Q ; Kemudian pindahkan pointer FIRST
LAST INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Kemudian pindahkan pointer FIRST Sehingga menunjuk simpul awal Dengan instruksi : FIRST = Q ;
65
Keadaan akhir setelah DELETE KIRI
FIRST Q LAST INFO LINK INFO LINK INFO LINK 12 17 10 (1) (2) (3) Keadaan akhir setelah DELETE KIRI Biarkan pointer Q tetap menunjuk simpul awal. Pointer Q tidak menggangu. Nanti akan digunakan untuk keperluan berikutnya
67
Q = FIRST->LINK; free(FIRST); FIRST = Q; FIRST LAST 25 12 17 10 (1)
INFO LINK INFO INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) FIRST LAST LINK INFO INFO LINK INFO LINK 12 17 10 (1) (2) (3) Kesimpulan : Untuk menghapus simpul (1) atau DELETE KIRI Diperlukan algoritma : Q = FIRST->LINK; free(FIRST); FIRST = Q;
68
X = FIRST->INFO; printf(“%i”, X); Q = FIRST->LINK; free(FIRST);
LAST 3.08 LINK INFO LINK INFO INFO LINK INFO LINK 25 12 17 10 (1) (2) (3) (4) FIRST LAST LINK INFO INFO LINK INFO LINK 12 17 10 (1) (2) (3) Apabila sebelum dihapus nilai INFO (25) Harus dicetak, maka perlu ditambah instruksi menjadi : X = FIRST->INFO; printf(“%i”, X); Q = FIRST->LINK; free(FIRST); FIRST = Q;
69
HASIL LANGKAH SATU PER SATU
3.08 PERHATIKAN HASIL LANGKAH SATU PER SATU
70
Keadaan awal : Q = FIRST->LINK; free(FIRST); FIRST = Q; 25 12 17 10
LAST INFO LINK INFO LINK INFO LINK INFO LINK Keadaan awal : 25 12 17 10 Hasilnya bila Dikenai instruksi : Q FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK Q = FIRST->LINK; 25 12 17 10 Q FIRST LAST INFO LINK INFO LINK INFO LINK free(FIRST); 12 17 10 FIRST Q LAST INFO LINK INFO LINK INFO LINK FIRST = Q; 12 17 10
71
Bersambung ke : Delete Kanan
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.