1 6.3 & 7.3 NESTED LOOP Linear Doubly Linked List
Dec 14, 2015
4
3. 01ILUSTRASI LINEAR DOUBLY LINKED LIST
25IN
FO
RIG
HT
LEFT
FIRST
12
INFO
RIG
HT
LEFT
17
INFO
LEFT
10
RIG
HT
INFO
LEFT
RIG
HT
LAST
10
INFO
RIG
HT
LEFT
LAST
17
INFO
RIG
HT
LEFT
12IN
FO
LEFT
25
RIG
HT
INFO
LEFT
RIG
HT
FIRST
(1) (2) (3) (4)
(1)(2)(3)(4)
5
4. 01
Ilustrasi sebuah Simpul
INFO
RIG
HT
Nama fieldTipe
Isi
: RIGHT: pointer: akan diisi dengan alamat record berikutnya (disebelah ‘kanan’nya)Nama field
TipeIsi
: INFO: integer: akan diisi data
Simpul dengan 3 elemen atau field
LEFT
Nama fieldTipe
Isi
: LEFT: pointer: akan diisi dengan alamat record sebelumnya (disebelah ‘kiri’nya)
6
4. 01
Dalam Bahasa C, salah satu cara untuk menyatakan suatu simpuldengan struktur demikian, dapat ditulis sebagai berikut :
struct Simpul { struct Simpul *LEFT; int INFO; struct Simpul *RIGHT; };Simpul *P, *FIRST, *LAST;
INFO
RIG
HT
LEFT
8
3. 01
25IN
FO
RIG
HT
LEFT
FIRST
12
INFO
RIG
HT
LEFT
17
INFO
LEFT
10
RIG
HT
INFO
LEFT
RIG
HT
LAST
(1) (2) (3) (4)
Ini Simpul
Awal
INFO
RIG
HTP
LEF
T
FIRST
LAST
25
9
2.2.1 Pembuatan Simpul Awal (inisialisasi)
INFO
RIG
HTP
LEFT
FIRST
LAST
void Awal (void){ int X; scanf(“%i”, &X); P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
4. 02
25
10
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
P = (Simpul *) malloc(sizeof(Simpul));
4. 02
1)
INFO
RIG
HTP
LEFT
11
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
P->INFO = X;
4. 02
2)
INFO
RIG
HTP
LEFT
25
12
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
FIRST = P;
4. 02
3)
INFO
RIG
HTP
LEFTFIRST
25
13
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
LAST = P;
4. 02
4)
INFO
RIG
HTP
LEFTFIRST
LAST
25
14
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
P->LEFT = NULL;
4. 02
5)
INFO
RIG
HTP
LEFTFIRST
LAST
25
15
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL;}
1)2)3)4)5)6)
P->RIGHT = NULL;
4. 02
6)
INFO
RIG
HTP
LEFTFIRST
LAST
25
17
4. 02
INFO
RIG
HTP
LEFT
FIRST
25
P->RIGHT, atauFIRST->RIGHT
P->INFO, atauFIRST->INFO
P->LEFT, atauFIRST->LEFT
18
4. 02
INFO
RIG
HTP
LEFT
FIRST
LAST
25
P->RIGHT, atauFIRST->RIGHT, atauLAST->RIGHT
P->INFO, atauFIRST->INFO; atauLAST->INFO
P->LEFT, atauFIRST->LEFT, atauLAST->LEFT
19
4. 02
INFO
RIG
HTP
LEFT
FIRST
LAST
25
P->RIGHT, atauFIRST->RIGHT, atauLAST->RIGHT
P->INFO, atauFIRST->INFO; atauLAST->INFO
P->LEFT, atauFIRST->LEFT, atauLAST->LEFT
21
INSERT KANANMenambah simpul baru diujung paling kanan Linked
List yang sudah ada Disebut juga
INSERT AKHIR
3.08
22
3.08
Kalau sudah ada 4 buah simpul, INSERT KANAN akan menginsert simpul yang baru di buat, diujung paling kanan menjadi simpul no. (5)
(5)
25
INFO
RIG
HT
LEFT
FIRST
12
INFO
RIG
HT
LEFT
17
INFO
LEFT
10
RIG
HT
INFO
LEFT
RIG
HT
LAST
(1) (2) (3) (4)
24
3.05
akan dibuat simpul baruyang akan diinsert disini
Perhatikan pointer Pmenujuk simpul yang barutidak menunjuk simpul yang lama lagi
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
25
3.05
sehingga akan ter-linksebagai berikut :
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
26
3.05
void Awal (void){ int X; scanf(“%i”, &X); P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;}
1)2)3)4)5)6)
Algoritma Membuat Simpul BaruDan INSERT KANAN
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HT
P
LEFT
12
(1) (2)
28
3.05
Membuat Simpul (2)
INFO
RIG
HT
LEFT
FIRST
25
INFO
RIG
HTP
LEFT
(1) (2)
LAST
1)2)3)4)5)6)
P = (Simpul *) malloc(sizeof(Simpul));
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
29
3.05
P->INFO diisi dengan nilai X
INFO
RIG
HT
LEFT
FIRST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
LAST
1)2)3)4)5)6)
P->INFO = X;
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
30
3.05
Pointer RIGHT Simpul (1) menunjuk simpul (2)
INFO
RIG
HT
LEFT
FIRST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
LAST
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
1)2)3)4)5)6)
LAST->RIGHT = P;
31
3.05
Pointer LEFT simpul (2) menunjuk simpul (1)
INFO
RIG
HT
LEFT
FIRST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
LAST
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
1)2)3)4)5)6)
P->LEFT = LAST;
32
3.05
Pointer LAST pindah menunjuk simpul teralhir
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
1)2)3)4)5)6)
LAST = P;
33
3.05
Pointer RIGHT simpul (2) diisi NULL
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
1)2)3)4)5)6)
P->RIGHT = NULL;
35
3.05
INFO
RIG
HT
LEFT
FIRST
LAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
Pertanyaan :1. Ada berapa buah simpul2. Ada berapa buah pointer Sebutkan nama dan isinya masing-masing
37
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
No Nama isi&(1)
&(2)&(2)
38
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu :->LEFT yaitu :
No Nama isi&(1)
&(2)&(2)
39
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
No Nama isi
NULL
&(1)
&(2)&(2)
40
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
No Nama isi
NULL
&(1)
&(2)&(2)
1
6
->RIGHT yaitu :->RIGHT yaitu :
41
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
1
6
->RIGHT yaitu : FIRST->RIGHT->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT
No Nama isi
NULL
&(2)
&(1)
&(2)&(2)
42
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
1
6
->RIGHT yaitu : FIRST->RIGHT->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT
2
3
->LEFT yaitu :->LEFT yaitu :
5 ->LEFT yaitu :
No Nama isi
NULL
&(2)
&(1)
&(2)&(2)
43
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
1
6
->RIGHT yaitu : FIRST->RIGHT->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT
2
3
->LEFT yaitu : P->LEFT->LEFT yaitu : LAST->LEFT
5 ->LEFT yaitu : FIRST->RIGHT->LEFT
No Nama isi
NULL
&(2)
&(1)
&(1)
&(2)&(2)
44
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
1
6
->RIGHT yaitu : FIRST->RIGHT->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT
2
3
->LEFT yaitu : P->LEFT->LEFT yaitu : LAST->LEFT
5 ->LEFT yaitu : FIRST->RIGHT->LEFT
No Nama isi
2
5
->RIGHT yaitu :
->RIGHT yaitu :3 ->RIGHT yaitu :
NULL
&(2)
&(1)
&(1)
&(2)&(2)
45
INFO
RIG
HT
LEFT
FIRSTLAST
25
INFO
RIG
HTP
LEFT
12
(1) (2)
1
45
2
3
6
7
No Pointer Nama pointer isi
1
2
3
4
5
6
7
FIRSTP
LAST
1
6
->LEFT yaitu : FIRST->LEFT->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT
1
6
->RIGHT yaitu : FIRST->RIGHT->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT
2
3
->LEFT yaitu : P->LEFT->LEFT yaitu : LAST->LEFT
5 ->LEFT yaitu : FIRST->RIGHT->LEFT
No Nama isi
2
5
->RIGHT yaitu : P->RIGHT
->RIGHT yaitu : FIRST->RIGHT->RIGHT 3 ->RIGHT yaitu : LAST->RIGHT
NULL
&(2)
&(1)
NULL
&(1)
&(2)&(2)