1 6.3 & 7.3 NESTED LOOP Linear Doubly Linked List
2 Linear Doubly Linked List ( Linked List dengan pointer ganda )
LINKED LIST LURUS DENGAN POINTER GANDA
ILUSTRASI LINEAR DOUBLY LINKED LIST 25 INFO RIGHT LEFT FIRST 12 INFO RIGHT LEFT 17 INFO LEFT 10 RIGHT INFO LEFT RIGHT LAST 10 INFO RIGHT LEFT LAST 17 INFO RIGHT LEFT 12 INFO LEFT 25 RIGHT INFO LEFT RIGHT FIRST (1) (2)(3)(4) (1)(2)(3) (4)
Ilustrasi sebuah Simpul INFO RIGHT Nama field Tipe Isi : RIGHT : pointer : akan diisi dengan alamat record berikutnya (disebelah ‘kanan’nya) Nama field Tipe Isi : INFO : integer : akan diisi data Simpul dengan 3 elemen atau field LEFT Nama field Tipe Isi : LEFT : pointer : akan diisi dengan alamat record sebelumnya (disebelah ‘kiri’nya)
Dalam Bahasa C, salah satu cara untuk menyatakan suatu simpul dengan struktur demikian, dapat ditulis sebagai berikut : struct Simpul { struct Simpul *LEFT; int INFO; struct Simpul *RIGHT; }; Simpul *P, *FIRST, *LAST; INFO RIGHT LEFT
7 6.3 & 7.3 NESTED LOOP Linear Doubly Linked List Pembuatan Simpul Awal
INFO RIGHT LEFT FIRST 12 INFO RIGHT LEFT 17 INFO LEFT 10 RIGHT INFO LEFT RIGHT LAST (1) (2)(3)(4) Ini Simpul Awal INFO RIGHT P LEF T FIRST LAST 25
Pembuatan Simpul Awal (inisialisasi) INFO RIGHT P 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)
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)); ) INFO RIGHT P 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; ) INFO RIGHT P 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; ) INFO RIGHT P LEFT FIRST 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; ) INFO RIGHT P LEFT FIRST 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; ) INFO RIGHT P LEFT FIRST 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; ) INFO RIGHT P LEFT FIRST LAST 25
INFO RIGHT P LEFT 25 P->RIGHT P->INFO P->LEFT
INFO RIGHT P LEFT FIRST 25 P->RIGHT, atau FIRST->RIGHT P->INFO, atau FIRST->INFO P->LEFT, atau FIRST->LEFT
INFO RIGHT P LEFT FIRST LAST 25 P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT P->INFO, atau FIRST->INFO; atau LAST->INFO P->LEFT, atau FIRST->LEFT, atau LAST->LEFT
INFO RIGHT P LEFT FIRST LAST 25 P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT P->INFO, atau FIRST->INFO; atau LAST->INFO P->LEFT, atau FIRST->LEFT, atau LAST->LEFT
& 7.3 NESTED LOOP Linear Doubly Linked List INSERT KANAN
21 INSERT KANAN Menambah simpul baru diujung paling kanan Linked List yang sudah ada Disebut juga INSERT AKHIR 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 RIGHT LEFT FIRST 12 INFO RIGHT LEFT 17 INFO LEFT 10 RIGHT INFO LEFT RIGHT LAST (1) (2)(3)(4)
sudah ada simpul awal sebagai berikut : INFO RIGHT LEFT FIRST LAST 25 (1)
akan dibuat simpul baru yang akan diinsert disini Perhatikan pointer P menujuk simpul yang baru tidak menunjuk simpul yang lama lagi INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2)
sehingga akan ter-link sebagai berikut : INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2)
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 Baru Dan INSERT KANAN INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2)
Algoritma tahap per tahap
Membuat Simpul (2) INFO RIGHT LEFT FIRST 25 INFO RIGHT P LEFT (1)(2) LAST 1) 2) 3) 4) 5) 6) P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL;
P->INFO diisi dengan nilai X INFO RIGHT LEFT FIRST 25 INFO RIGHT P 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;
Pointer RIGHT Simpul (1) menunjuk simpul (2) INFO RIGHT LEFT FIRST 25 INFO RIGHT P 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;
Pointer LEFT simpul (2) menunjuk simpul (1) INFO RIGHT LEFT FIRST 25 INFO RIGHT P 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;
Pointer LAST pindah menunjuk simpul teralhir INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P 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;
Pointer RIGHT simpul (2) diisi NULL INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P 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;
LATIHAN DI KELAS
INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) Pertanyaan :1.Ada berapa buah simpul 2.Ada berapa buah pointer Sebutkan nama dan isinya masing-masing
INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2)
37 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P LAST No Nama isi &(1) &(2)
38 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P LAST 1 6 ->LEFT yaitu : No Nama isi &(1) &(2)
39 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P LAST 1 6 ->LEFT yaitu : FIRST->LEFT ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT No Nama isi NULL &(1) &(2)
40 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P LAST 1 6 ->LEFT yaitu : FIRST->LEFT ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT No Nama isi NULL &(1) &(2) 1 6 ->RIGHT yaitu :
41 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P 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)
42 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P 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 : 5 No Nama isi NULL &(2) &(1) &(2)
43 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P 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) &(2)
44 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P 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 : 3 NULL &(2) &(1) &(2)
45 INFO RIGHT LEFT FIRST LAST 25 INFO RIGHT P LEFT 12 (1)(2) No Pointer Nama pointer isi FIRST P 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)