Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Linear Doubly Linked List
6.3 & 7.3 NESTED LOOP
2
Linear Doubly Linked List ( Linked List dengan pointer ganda )
3
2. LINEAR DOUBLY LINKED LIST
3. 02 2. LINEAR DOUBLY LINKED LIST LINKED LIST LURUS DENGAN POINTER GANDA
4
ILUSTRASI LINEAR DOUBLY LINKED LIST
3. 01 FIRST LAST RIGHT RIGHT LEFT INFO LEFT INFO RIGHT RIGHT LEFT INFO LEFT INFO 25 12 17 10 (1) (2) (3) (4) LAST FIRST INFO RIGHT LEFT LEFT INFO RIGHT INFO RIGHT INFO RIGHT LEFT LEFT 10 17 12 25 (4) (3) (2) (1)
5
Ilustrasi sebuah Simpul
4. 01 Ilustrasi sebuah Simpul RIGHT LEFT INFO Simpul dengan 3 elemen atau field Nama field Tipe Isi : RIGHT : pointer : akan diisi dengan alamat record berikutnya (disebelah ‘kanan’nya) Nama field Tipe Isi : INFO : integer : akan diisi data Nama field Tipe Isi : LEFT : pointer : akan diisi dengan alamat record sebelumnya (disebelah ‘kiri’nya)
6
Dalam Bahasa C, salah satu cara untuk menyatakan suatu simpul
4. 01 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; RIGHT LEFT INFO
7
Linear Doubly Pembuatan Simpul Awal
Linked List Pembuatan Simpul Awal 6.3 & 7.3 NESTED LOOP
8
25 P Ini Simpul Awal 3. 01 FIRST LAST 25 12 17 10 (1) (2) (3) (4) LAST
RIGHT RIGHT LEFT INFO LEFT INFO INFO RIGHT LEFT LEFT INFO RIGHT 25 12 17 10 (1) (2) (3) (4) LAST FIRST P Ini Simpul Awal RIGHT LEFT INFO 25
9
25 P 2.2.1 Pembuatan Simpul Awal (inisialisasi) void Awal (void)
4. 02 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) LAST FIRST P RIGHT LEFT INFO 25
10
P = (Simpul *) malloc(sizeof(Simpul));
P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) 1) P = (Simpul *) malloc(sizeof(Simpul)); P RIGHT LEFT INFO
11
25 P->INFO = X; P 2) RIGHT INFO LEFT 4. 02
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) 2) P->INFO = X; P RIGHT LEFT INFO 25
12
25 FIRST = P; P 3) FIRST RIGHT INFO LEFT 4. 02
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) FIRST = P; 3) FIRST P RIGHT LEFT INFO 25
13
25 LAST = P; P 4) LAST FIRST RIGHT INFO LEFT 4. 02
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) LAST = P; 4) LAST FIRST P RIGHT LEFT INFO 25
14
25 P->LEFT = NULL; P 5) LAST FIRST RIGHT INFO LEFT 4. 02
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) P->LEFT = NULL; 5) LAST FIRST P RIGHT LEFT INFO 25
15
25 P->RIGHT = NULL; P 6) LAST FIRST RIGHT INFO LEFT 4. 02
P = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; FIRST = P; LAST = P; P->LEFT = NULL; P->RIGHT = NULL; } 4. 02 1) 2) 3) 4) 5) 6) P->RIGHT = NULL; 6) LAST FIRST P RIGHT LEFT INFO 25
16
4. 02 P RIGHT LEFT INFO 25 P->RIGHT P->LEFT P->INFO
17
25 P P->RIGHT, atau FIRST->RIGHT P->LEFT, atau FIRST->LEFT
4. 02 FIRST P RIGHT LEFT INFO 25 P->RIGHT, atau FIRST->RIGHT P->LEFT, atau FIRST->LEFT P->INFO, atau FIRST->INFO
18
25 P P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT
4. 02 LAST FIRST P RIGHT LEFT INFO 25 P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT P->LEFT, atau FIRST->LEFT, atau LAST->LEFT P->INFO, atau FIRST->INFO; atau LAST->INFO
19
25 P P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT
4. 02 LAST FIRST P RIGHT LEFT INFO 25 P->RIGHT, atau FIRST->RIGHT, atau LAST->RIGHT P->LEFT, atau FIRST->LEFT, atau LAST->LEFT P->INFO, atau FIRST->INFO; atau LAST->INFO
20
Linear Doubly INSERT KANAN
Linked List INSERT KANAN 6.3 & 7.3 NESTED LOOP
21
Menambah simpul baru diujung paling kanan Linked List yang sudah ada
3.08 INSERT KANAN Menambah simpul baru diujung paling kanan Linked List yang sudah ada Disebut juga INSERT AKHIR
22
3.08 FIRST LAST INFO RIGHT RIGHT LEFT LEFT INFO INFO RIGHT LEFT LEFT INFO RIGHT 25 12 17 10 (1) (2) (3) (4) (5) Kalau sudah ada 4 buah simpul, INSERT KANAN akan menginsert simpul yang baru di buat, diujung paling kanan menjadi simpul no. (5)
23
25 sudah ada simpul awal sebagai berikut : LAST FIRST RIGHT INFO LEFT
3.05 sudah ada simpul awal sebagai berikut : LAST FIRST RIGHT LEFT INFO 25 (1)
24
25 12 P akan dibuat simpul baru yang akan diinsert disini LAST FIRST
3.05 akan dibuat simpul baru yang akan diinsert disini LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Perhatikan pointer P menujuk simpul yang baru tidak menunjuk simpul yang lama lagi
25
25 12 P sehingga akan ter-link sebagai berikut : LAST FIRST RIGHT
3.05 sehingga akan ter-link sebagai berikut : LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2)
26
Algoritma Membuat Simpul Baru Dan INSERT KANAN
3.05 Algoritma Membuat Simpul Baru Dan INSERT KANAN 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) LAST FIRST RIGHT P RIGHT LEFT INFO LEFT INFO 25 12 (1) (2)
27
Algoritma tahap per tahap
3.05 Algoritma tahap per tahap
28
25 P P = (Simpul *) malloc(sizeof(Simpul)); LAST FIRST RIGHT RIGHT
P->INFO = X; LAST->RIGHT = P; P->LEFT = LAST; LAST = P; P->RIGHT = NULL; 1) 2) 3) 4) 5) 6) 3.05 P = (Simpul *) malloc(sizeof(Simpul)); LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 (1) (2) Membuat Simpul (2)
29
25 12 P P->INFO = X; LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO (1)
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) 3.05 P->INFO = X; LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) P->INFO diisi dengan nilai X
30
25 12 P LAST->RIGHT = P; LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO
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) 3.05 LAST->RIGHT = P; LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Pointer RIGHT Simpul (1) menunjuk simpul (2)
31
25 12 P P->LEFT = LAST; LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO
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) 3.05 P->LEFT = LAST; LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Pointer LEFT simpul (2) menunjuk simpul (1)
32
25 12 P LAST = P; LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO (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) 3.05 LAST = P; LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Pointer LAST pindah menunjuk simpul teralhir
33
25 12 P P->RIGHT = NULL; LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO
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) 3.05 P->RIGHT = NULL; LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Pointer RIGHT simpul (2) diisi NULL
34
3.05 LATIHAN DI KELAS
35
25 12 P Pertanyaan : Ada berapa buah simpul Ada berapa buah pointer
3.05 LAST FIRST P RIGHT RIGHT LEFT INFO LEFT INFO 25 12 (1) (2) Pertanyaan : Ada berapa buah simpul Ada berapa buah pointer Sebutkan nama dan isinya masing-masing
36
25 12 P LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO (1) (2) 3.05 3 1 2
6 5 (1) (2) 7 4
37
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT RIGHT No Nama isi LEFT INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi 4 5 6 7
38
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT RIGHT No Nama isi LEFT INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : 4 1 ->LEFT yaitu : 6 5 6 7
39
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT RIGHT No Nama isi LEFT INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 5 6 7
40
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT RIGHT No Nama isi LEFT INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : 5 1 ->RIGHT yaitu : 6 6 7
41
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT LEFT RIGHT No Nama isi INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : FIRST->RIGHT 5 1 &(2) ->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT 6 6 7
42
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT LEFT RIGHT No Nama isi INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : FIRST->RIGHT 5 1 &(2) ->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT 6 ->LEFT yaitu : 6 2 ->LEFT yaitu : 3 ->LEFT yaitu : 5 7
43
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT LEFT RIGHT No Nama isi INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : FIRST->RIGHT 5 1 &(2) ->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT 6 ->LEFT yaitu : P->LEFT 6 2 ->LEFT yaitu : LAST->LEFT &(1) 3 ->LEFT yaitu : FIRST->RIGHT->LEFT 5 7
44
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT RIGHT No Nama isi LEFT INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : FIRST->RIGHT 5 1 &(2) ->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT 6 ->LEFT yaitu : P->LEFT 6 2 ->LEFT yaitu : LAST->LEFT &(1) 3 ->LEFT yaitu : FIRST->RIGHT->LEFT 5 ->RIGHT yaitu : 7 2 ->RIGHT yaitu : 3 ->RIGHT yaitu : 5
45
25 12 P No Nama isi &(1) FIRST P &(2) LAST &(2)
3 RIGHT LEFT LEFT RIGHT No Nama isi INFO INFO 1 2 &(1) 1 FIRST 25 6 12 P 2 &(2) 5 3 LAST &(2) 4 (1) (2) 7 No Pointer Nama pointer isi ->LEFT yaitu : FIRST->LEFT 4 1 NULL ->LEFT yaitu : P->LEFT->LEFT LAST->LEFT->LEFT 6 ->RIGHT yaitu : FIRST->RIGHT 5 1 &(2) ->RIGHT yaitu : P->LEFT->RIGHT LAST->LEFT->RIGHT 6 ->LEFT yaitu : P->LEFT 6 2 ->LEFT yaitu : LAST->LEFT &(1) 3 ->LEFT yaitu : FIRST->RIGHT->LEFT 5 ->RIGHT yaitu : P->RIGHT 7 2 ->RIGHT yaitu : LAST->RIGHT NULL 3 ->RIGHT yaitu : FIRST->RIGHT->RIGHT 5
46
4. 05 109 3). LAST->RIGHT = P; 25 12 4). P->LEFT = LAST;
INFO RIGHT LEFT FIRST 12 LAST P void InsertKanan (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) Harap diingat, bahwa pointer ini sekarang namanya ada 2 yaitu: FIRST-RIGHT, atau LAST->RIGHT Catatan : Untuk menghubungkan simpul (1) dengan atau ke simpul(2), ada 2 instruksi yang dapat digunakan yaitu : LAST->RIGHT = P; atau FIRST->RIGHT = P; tapi disini dipilih LAST->RIGHT = P; karena instruksi ini dapat juga digunakan untuk menghubungkan simpul (2) ke simpul (3), (3) ke (4), (4) ke (5) danseterusnya, sebab pointer LAST selalu menunjuk simpul yang terakhir 4). P->LEFT = LAST; Akan menghasilkan : Catatan : Disinipun dapat digunakan 2 macam instruksi yaitu : P->LEFT = LAST; atau P->LEFT = FIRST; denganalasan yang sama seperti diatas, maka dipilih : P->LEFT = LAST; 25 INFO RIGHT LEFT FIRST 12 LAST P Untuk memindahkan pointer LAST agar menunjuk simpul no (2) instruksi yang paling mudah dimengerti adalah : LAST = P; Sebenarnya bisa juga dengan instruksi : LAST = LAST->RIGHT yang artinya mengeser pointer LAST satu langkah maju sesuai arah pointer (arah panah kekanan) bahkan karena simpul (1) juga ditunjuk oleh pointer FIRST, maka bisa juga dengan instruksi : LAST = FIRST->RIGHT; 5). LAST = P; dan Akan menghasilkan : 25 INFO RIGHT LEFT FIRST 12 LAST P 109
47
4. 06 110 6) P->RIGHT = NULL; Akan menghasilkan : 25 12
void InsertKanan (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; } Akan menghasilkan : P FIRST INFO RIGHT LAST 1) 2) 3) 4) 5) 6) LEFT LEFT INFO RIGHT 25 12 (1) (2) Pointer ini namanya ada 3 yaitu : P->LEFT, atau LAST->LEFT atau FIRST->RIGHT->LEFT Pointer ini namanya ada 3 yaitu : P->RIGHT, atau LAST->RIGHT, atau FIRST->RIGHT->RIGHT. Pointer ini namanya ada 3 yaitu : FIRST->RIGHT, atau P->LEFT->RIGHT, atau LAST->LEFT->RIGHT. Pointer ini namanya ada 3 yaitu : FIRST->LEFT, atau P->LEFT->LEFT, atau LAST->LEFT->LEFT Apabila instruksi (fungsi) InsertKanan diatas dilaksanakan sebanyak 3 kali dengan nilai X masing-masing = 12, 17, dan 10, maka akan dihasilkan linked list sebagai berikut: FIRST LAST LEFT INFO RIGHT LEFT INFO RIGHT LEFT INFO RIGHT LEFT INFO RIGHT 25 12 17 10 (1) (2) (3) (4) 110
48
4. 07 111 2.2.3 INSERT KIRI (Insert Awal)
Sudah dibuat simpul awal sebagai berikut : Akan dibuat simpul baru (2) yang akan diinsert disebelah kiri simpul lama (1), sehingga tersambung dengan simpul awal (1) sebagai berikut: LAST FIRST P LAST RIGHT LEFT INFO P LEFT INFO RIGHT FIRST LEFT INFO RIGHT 12 25 25 (2) (1) (1) Instruksi yang diperlukan, adalah sebagai berikut : Fungsi untuk Insert Kanan. void InsertKiri (void) { int X; scanf(“%i”, &X); p = (Simpul*) malloc(sizeof(Simpul)); P->INFO = X; P->RIGHT = LAST; LAST->LEFT = P; LAST = P; P->LEFT = NULL; } 1) 2) 3) 4) 5) 6) Ada 6 instruksi yang perlu kita perhatikan : 1) P = (Simpul*) malloc(sizeof(Simpul)); 2) P->INFO = X; (misal X = 12) Akan menghasilkan : LAST P FIRST LEFT INFO RIGHT LEFT INFO RIGHT Pointer P tidak lagi menunjuk simpul pertama (1) tapi menunjuk simpul yang baru dibuat (2) 12 25 111
49
4. 08 112 3) P->RIGHT = LAST; Akan menghasilkan : P 12 25
void InsertKiri (void) { int X; scanf(“%i”, &X); p = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; P->RIGHT = LAST; LAST->LEFT = P; LAST = P; P->LEFT = NULL; } 3) P->RIGHT = LAST; Akan menghasilkan : LAST P 1) 2) 3) 4) 5) 6) FIRST LEFT INFO RIGHT LEFT INFO RIGHT 12 25 (2) (1) Catatan : Untuk menghubungkan simpul (2) dengan atau ke simpul(1), sekarang ini ada 2 instruksi yang dapat digunakan yaitu : P->RIGHT = LAST; atau P->RIGHT = FIRST; tapi disini dipilih P->RIGHT = LAST; karena instruksi ini dapat juga digunakan untuk menghubungkan simpul (3) ke simpul (2), (4) ke (3), (5) ke (4) danseterusnya, sebab pointer LAST selalu menunjuk simpul yang terakhir (paling kiri) 4) LAST->LEFT = P; Akan menghasilkan : LAST Catatan : Disinipun dapat digunakan 2 macam instruksi yaitu : LAST->LEFT = P; atau FIRST->LEFT = P; denganalasan yang sama seperti diatas, maka dipilih : LAST->LEFT = P; P FIRST LEFT INFO RIGHT LEFT INFO RIGHT 12 25 (2) (1) Untuk memindahkan pointer LAST agar menunjuk simpul no (2) instruksi yang paling mudah dimengerti adalah : LAST = P; Sebenarnya bisa juga dengan instruksi : LAST = LAST->LEFT yang artinya mengeser pointer LAST satu langkah kekiri bahkan karena sekarang ini simpul (1) juga ditunjuk oleh pointer FIRST, maka bisa juga dengan instruksi : LAST = FIRST->LEFT; 5) LAST = P; dan Akan menghasilkan : LAST P FIRST LEFT INFO RIGHT LEFT INFO RIGHT 12 25 (2) (1) 112
50
4. 09 113 6) P->LEFT = NULL; Akan menghasilkan : 12 25
void InsertKiri (void) { int X; scanf(“%i”, &X); p = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; P->RIGHT = LAST; LAST->LEFT = P; LAST = P; P->LEFT = NULL; } 6) P->LEFT = NULL; Akan menghasilkan : P 1) 2) 3) 4) 5) 6) LAST LEFT INFO RIGHT FIRST LEFT INFO RIGHT 12 25 (2) (1) Pointer ini namanya ada 3 yaitu : FIRST->LEFT, atau P->RIGHT->LEFT atau LAST->RIGHT->LEFT Pointer ini namanya ada 3 yaitu : FIRST->RIGHT, atau P->RIGHT->RIGHT, atau LAST->RIGHT->RIGHT. Pointer ini namanya ada 3 yaitu : P->RIGHT, atau LAST->RIGHT, atau FIRST->LEFT->RIGHT. Pointer ini namanya ada 3 yaitu : P->LEFT, atau LAST->LEFT, atau FIRST->LEFT->LEFT Apabila instruksi (fungsi) InsertKiri diatas dilaksanakan sebanyak 3 kali dengan nilai X masing-masing = 12, 17, dan 10, maka akan dihasilkan linked list sebagai berikut: LAST LEFT INFO RIGHT LEFT INFO RIGHT LEFT INFO RIGHT FIRST LEFT INFO RIGHT 10 17 12 25 (4) (3) (2) (1) 113
51
4. 10 INSERT TENGAH. Sudah ada doubly linked linear list. Simpul no (7) sudah ditunjuk oleh pointer P. Sudah dibuat sebuah simpul baru yang ditunjuk oleh pointer P, dan P->INFO sudah diisi seperti ilustrasi berikut ini. P LEFT INFO RIGHT Q 20 LEFT INFO RIGHT LEFT INFO RIGHT 32 27 (7) (8) Soal : Susun algoritma untuk menginsert simpul baru tersebut antara simpul no (7) dan simpul no (8), sehingga terhubung seperti yang diilustrasikan berikut ini : P LEFT INFO RIGHT 20 Q 4) LEFT INFO RIGHT 8 3) LEFT INFO RIGHT 2) 1) 32 27 7 9 Instruksi yang diperlukan, adalah sebagai berikut : Fungsi untuk Insert Tengah. void InsertTengah (void) { int X; scanf(“%i”, &X); p = (Simpul *) malloc(sizeof(Simpul)); P->INFO = X; P->RIGHT = Q->RIGHT; P->LEFT = Q; Q->RIGHT->LEFT = P; Q->RIGHT = P; Sekarang simpul ini menjadi berada pada urutan simpul yang ke 9. Nomor ini tak ada dalam komputer. Nomor ini hanya dipakai untuk mengilustrasikan urutan simpul. 1) 2) 3) 4) atau P->RIGHT->LEFT = P; Ada 4 instruksi yang pokok 114
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.