Linked List INSERT KIRI 6.3 & 7.3 NESTED LOOP
Menambah simpul baru diujung paling kiri Linked List yang sudah ada 3.08 INSERT KIRI Menambah simpul baru diujung paling kiri Linked List yang sudah ada Disebut juga INSERT AWAL
3.08 FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (5) (1) (2) (3) (4) Kalau sudah ada 4 buah simpul, INSERT KIRI akan menginsert simpul yang baru di buat, diujung paling kiri menjadi simpul no. (5)
P 25 sudah ada simpul awal sebagai berikut : LAST FIRST INFO LINK 3.05 (1)
P 14 25 akan dibuat simpul baru yang akan diinsert disini LAST FIRST 3.05 LAST FIRST P INFO LINK INFO LINK 14 25 (1) Perhatikan pointer P menujuk simpul yang baru, simpul (2) , tidak menunjuk simpul (1) lagi
P 14 25 sehingga akan ter-link sebagai berikut : LAST FIRST INFO LINK 3.05 sehingga akan ter-link sebagai berikut : LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1)
P 14 25 sehingga akan ter-link sebagai berikut : LAST FIRST INFO LINK 3.05 sehingga akan ter-link sebagai berikut : LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1)
void InsertKiri (void) { int X; scanf(ā%iā, &X); 3.05 Instruksi (algoritma) yang diperlukan, bila ditulis dalam sebuah fungsi : void InsertKiri (void) { int X; scanf(ā%iā, &X); P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST; FIRST = P; } 1) 2) 3) 4) Ada 4 instruksi pokok
Hasil instruksi satu per satu 3.05 Hasil instruksi satu per satu
P P=(Simpul*)malloc(sizeof(Simpul)); 25 P->INFO = X; P->LINK = FIRST FIRST = P; 1) 2) 3) 4) 3.05 P=(Simpul*)malloc(sizeof(Simpul)); instruksi 1) LAST FIRST P INFO LINK INFO LINK 25 (2) (1) Pointer P sudah menunjuk simpul no(2), tidak lagi menunjuk simpul (1)
25 \0 P X Sudad ada satu buah simpul awal 1000 FIRST LAST 1000 1000 INFO LINK 25 \0 1000 P FIRST LAST X 1000 1000 1000
25 \0 P X 800 misal alamat simpul baru = 800 1000 FIRST LAST 800 1000 INFO LINK 800 INFO LINK misal alamat simpul baru = 800 25 \0 1000 P FIRST LAST X 800 1000 1000
P P->INFO = X; 12 25 P=(Simpul*)malloc(sizeof(Simpul)); P->LINK = FIRST FIRST = P; 1) 2) 3) 4) 3.05 P->INFO = X; instruksi 2) LAST FIRST P INFO LINK INFO LINK 12 25 (2) (1) misal X hasil input = 12
12 25 \0 P X 12 800 1000 FIRST LAST 800 1000 1000 INFO LINK INFO LINK Misal nilai X = 12 25 \0 1000 P FIRST LAST X 800 1000 1000 12
P P->LINK = FIRST; 14 25 P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST FIRST = P; 1) 2) 3) 4) 3.05 P->LINK = FIRST; instruksi 3) LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1)
14 25 P X 14 1000 800 \0 1000 FIRST LAST 800 1000 1000 INFO LINK INFO
P 14 25 P->LINK = LAST; atau P->LINK = FIRST; LAST 3.05 FIRST INFO LINK INFO LINK 14 25 (2) (1) 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;
14 25 14 25 Mana yang benar : P->LINK = FIRST; atau LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1) LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1) Untuk meng-Link simpul (2) Dengan simpul (1) Mana yang benar : P->LINK = FIRST; atau P->LINK = LAST;
14 25 14 25 Sekarang ini, baik : P->LINK = FIRST; atau LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1) LAST FIRST P INFO LINK INFO LINK 14 25 (2) (1) Untuk meng-Link simpul (2) Dengan simpul (1) Sekarang ini, baik : P->LINK = FIRST; atau P->LINK = LAST; Sama sama benar (SEKARANG INI)
P->LINK = FIRST; P (1) (2) (5) (3) (4) LAST P LINK LINK LINK LINK INFO INFO INFO INFO INFO LINK 14 25 12 17 10 (1) (2) (5) (3) (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;
Pointer paling kiri selalu ditunjuk oleh pointer FIRST 3.08 FIRST LAST INFO LINK INFO LINK INFO LINK INFO LINK 25 12 17 10 (1) (2) (3 (4) Pointer paling kiri selalu ditunjuk oleh pointer FIRST
P P 14 25 FIRST = P; 14 25 P=(Simpul*)malloc(sizeof(Simpul)); P->INFO = X; P->LINK = FIRST FIRST = P; 1) 2) 3) 4) 3.05 LAST FIRST P INFO LINK INFO LINK instruksi 4) 14 25 FIRST = P; (1) FIRST LAST P INFO LINK INFO LINK 14 25 (1)
14 25 P X 14 1000 800 \0 1000 FIRST LAST 800 800 1000 INFO LINK INFO
P 14 25 Setelah simpul baru telah tersambung FIRST 3.05 LAST P INFO LINK INFO LINK 14 25 (2) (1) Setelah simpul baru telah tersambung Maka simpul ini menjadi Simpul no. (1).
FIRST 3.05 LAST P INFO LINK INFO LINK 14 25 (1) (2)
3.05 LATIHAN DI KELAS
P 14 25 Ada berapa buah simpul yang terlihat Pertanyaan : FIRST 3.05 LAST P INFO LINK INFO LINK 14 25 (1) (2) Ada berapa buah simpul yang terlihat Pertanyaan : Ada berapa buah pointer yang terlihat - Apa nama masing-masing pointer - Apa isi masing-masing pointer
14 25 P FIRST 3.05 LAST 2 3 1 4 (1) (2) 5 No Nama Isi INFO LINK 3 INFO LINK 1 14 25 4 (1) (2) 5 No Nama Isi Pointer Pointer pointer 1 2 3 4 5
12 25 P FIRST 3.05 LAST 2 3 1 4 (1) (2) 5 No Nama Isi INFO LINK 3 INFO LINK 1 12 25 4 (1) (2) 5 No Nama Isi Pointer Pointer pointer 1 P &(1) 2 FIRST &(1) 3 LAST &(2) P->LINK, atau FIRST->LINK 4 &(2) 5 LAST->LINK atau P->LINK->LINK atau FIRST->LINK->LINK NULL
14 25 P Sebutkan pointer mana saja yang nilainya sama FIRST 3.05 LAST INFO LINK 3 INFO LINK 1 14 25 4 (1) (2) 5 Sebutkan pointer mana saja yang nilainya sama
12 25 P TRUE atau FALSE Kondisi berikut ini if( P->LINK == LAST ) FIRST 3.05 LAST P 2 INFO LINK 3 INFO LINK 1 12 25 4 (2) (1) 5 TRUE atau FALSE Kondisi berikut ini if( P->LINK == LAST ) if( LAST->LINK == FIRST->LINK->LINK )
Linked List INSERT TENGAH 6.3 & 7.3 NESTED LOOP
3.08 INSERT TENGAH Menyisipkan simpul baru diantara dua buah simpul pada sebuah Linked List yang sudah ada
. . . . . . . . . . . . P 3.08 Q (7) (8) P Q (7) (8) INFO LINK 14 INFO 22 20 . . . (7) (8) P INFO LINK 14 Q INFO LINK INFO LINK . . . . . . 22 20 (7) (8)
. . . . . . . . . . . . a a b P 3.08 Q (7) (8) P Q (7) (8) INFO LINK 14 Q INFO LINK INFO LINK . . . 22 20 . . . a (7) (8) P INFO LINK 14 Q INFO LINK INFO LINK a b . . . . . . 22 20 (7) (8)
a a b b a a b P Q (7) (8) P Q (7) (8) 14 22 20 14 22 20 INFO LINK INFO
a a b b a a b P Q (7) (8) P Q (7) (8) 14 22 20 14 22 20 INFO LINK INFO
a a b b a a b P Q Q->LINK = P; (7) (8) I P->LINK = Q->LINK; P INFO LINK 14 Q INFO LINK INFO LINK 22 20 a a Q->LINK = P; (7) (8) I b P->LINK = Q->LINK; P INFO LINK b P->LINK = Q->LINK; 14 II Q a Q->LINK = P; INFO LINK INFO LINK a b 22 20 (7) (8)
. . . . . . a b a Q->LINK = P; I P->LINK = Q->LINK; P 3.08 Q INFO LINK 14 Q INFO LINK INFO LINK . . . 22 20 . . . a (7) (8) a I Q->LINK = P; b P->LINK = Q->LINK;
a Q->LINK = P; a a P b Q (7) (8) Dengan : P Q (7) (8) I INFO LINK b P->LINK = Q->LINK; 14 Q INFO LINK INFO LINK 22 20 a (7) (8) Dengan : Q->LINK = P; P INFO LINK 14 Q INFO LINK INFO LINK a 22 20 (7) (8)
P->LINK = Q->LINK; a P I Q->LINK = P; INFO LINK b P->LINK = Q->LINK; 14 Q INFO LINK INFO LINK a 22 20 (7) (8) Dengan : P->LINK = Q->LINK; P INFO LINK 14 Q b INFO LINK INFO LINK a 22 20 (7) (8)
P->LINK = Q->LINK; a P I Q->LINK = P; INFO LINK b P->LINK = Q->LINK; 14 Q INFO LINK INFO LINK a 22 20 (7) (8) Dengan : P->LINK = Q->LINK; P INFO LINK 14 Q b INFO LINK INFO LINK a 22 20 (7) (8)
. . . . . . b a a II P->LINK = Q->LINK; Q->LINK = P; P 3.08 Q INFO LINK 14 Q INFO LINK INFO LINK . . . 22 20 . . . a (7) (8) II b P->LINK = Q->LINK; a Q->LINK = P;
P->LINK = Q->LINK; II b P P->LINK = Q->LINK; INFO LINK a Q->LINK = P; 14 Q INFO LINK INFO LINK 22 20 a (7) (8) Dengan : P->LINK = Q->LINK; P INFO LINK 14 Q INFO LINK b INFO LINK a 22 20 a (7) (8)
b a Q->LINK = P; b a P b a Q (7) (8) Dengan : P Q (8) (7) (8) (9) II b P P->LINK = Q->LINK; INFO LINK a Q->LINK = P; 14 Q INFO LINK b INFO LINK 22 20 a (7) (8) Dengan : Q->LINK = P; P INFO LINK 14 Q (8) INFO LINK b INFO LINK a 22 20 (7) (8) (9)
P->LINK = Q->LINK; Algoritma untuk : INSERT TENGAH Bila pointer Q sudah menunjuk simpul Yang disebelah kiri : Q->LINK = P; P->LINK = Q->LINK;