Linear Doubly Linked List

Slides:



Advertisements
Presentasi serupa
Menempatkan Pointer Q 6.3 & 7.3 NESTED LOOP.
Advertisements

Single linked list.
STRUKTUR DATA (7) single linked list circular
MODUL KULIAH STRUKTUR DATA TANGGAL REVISI TANGGAL BERLAKU KODE DOKUMEN :::::: September Session 8 Edited By Al-Bahra. L.B, S. Kom, M.
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
LINKED LIST (List linier)
LINKED LIST Single Linked List.
Linked List Pembuatan Simpul Awal.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Queue.
Soal-Soal Latihan Mandiri
Operasi pada pohon biner
Single Linked List Yuliana Setiowati, S.Kom.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Penelusuran Bab 7 Pohon Biner 219.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
LINKED LIST by Yohana N.
Double Ended QUEUE (DeQue) 6.3 & 7.3 NESTED LOOP.
Struktur Data List Linear : Linked List (Double Linkedlist)
Algorithm and Data Structures.
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Tenia Wahyuningrum, S.Kom. MT
Struktur Data List Linear : Linked List (Single Linkedlist)
POINTER.
LINKED LIST.
STACK.
Algoritma dan Struktur Data
BAB 5 LINKED LIST Linked list adalah struktur berupa rangkaian elemen saling berkait dimana tiap elemen dihubungkan ke elemen lain melalui pointer. Keterhubungan.
Bocoran Soal 6.3 & 7.3 NESTED LOOP UTS.
Universitas Budi Luhur
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
STRUKTUR DATA Linked List
BAB3 QUEUE 6.3 & 7.3 NESTED LOOP.
LINKED LIST by Yohana N.
QUEUE Copyright 2008 by Yohana.
Single Linked List.
12. Doubly Linear Linked List
Algoritma dan Struktur Data
BAB 5 TREE (Pohon) 179.
STACK 6.3 & 7.3 NESTED LOOP.
SUMMARY LINKED LIST.
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
STRUKTUR DATA Tree (Struktur Pohon).
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
MATAKULIAH : STRUKTUR DATA
Linked List INSERT KIRI 6.3 & 7.3 NESTED LOOP.
Linked List 6.3 & 7.3 NESTED LOOP.
Stack.
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
Oleh Shoffin Nahwa Utama, S.Kom
STRUKTUR DATA LINKED LIST
Linked List INSERT KANAN 6.3 & 7.3 NESTED LOOP.
DEQUE Deque (Deck atau Dequeue) adalah suatu list linier atau linier list, yang penambahan dan penghapusan elemennya dapat dilakukan pada kedua sisi ujung.
IT234 Algoritma dan Struktur Data
Defri Kurniawan VARIASI LIST Defri Kurniawan
Linear Doubly INSERT KIRI
Linear Doubly INSERT TENGAH
Skema Double Linier LinkedList
LINKED LIST (SENARAI BERANTAI)
IT234 Algoritma dan Struktur Data
Linked List DELETE TENGAH 6.3 & 7.3 NESTED LOOP.
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Linear Doubly Linked List 6.3 & 7.3 NESTED LOOP

Linear Doubly Linked List ( Linked List dengan pointer ganda )

2. LINEAR DOUBLY LINKED LIST 3. 02 2. LINEAR DOUBLY LINKED LIST LINKED LIST LURUS DENGAN POINTER GANDA

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)

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)

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

Linear Doubly Pembuatan Simpul Awal Linked List Pembuatan Simpul Awal 6.3 & 7.3 NESTED LOOP

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

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

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

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

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

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

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

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

4. 02 P RIGHT LEFT INFO 25 P->RIGHT P->LEFT P->INFO

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

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

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

Linear Doubly INSERT KANAN Linked List INSERT KANAN 6.3 & 7.3 NESTED LOOP

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

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)

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)

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 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)

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)

Algoritma tahap per tahap 3.05 Algoritma tahap per tahap

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)

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

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)

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)

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

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

3.05 LATIHAN DI KELAS

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

25 12 P LAST FIRST RIGHT RIGHT LEFT INFO LEFT INFO (1) (2) 3.05 3 1 2 6 5 (1) (2) 7 4

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

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

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

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

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

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

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

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

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

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

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

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 : 2.2.3 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

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

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

4. 10 2.2.4 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 : 2.2.4 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