I LINEAR SINGLY LINKED LIST II LINEAR DOUBLY
I. LINEAR SINGLY LINKED LIST II. LINEAR DOUBLY LINKED LIST III. CIRCULAR SINGLY LINKED LIST IV. CIRCULAR DOUBLY LINKED LIST
LINEAR SINGLY LINKED LIST 12 LINK INFO 25 17 LINK LAST FIRST INFO I. 10 II. LINEAR DOUBLY LINKED LIST 25 12 17 10 RIGHT INFO LEFT RIGHT LAST INFO LEFT FIRST
CIRCULAR SINGLY LINKED LIST 12 LINK INFO 25 17 LINK LAST FIRST INFO III. 10 IV. CIRCULAR DOUBLY LINKED LIST 12 17 10 RIGHT INFO LEFT RIGHT LEFT INFO 25 LEFT LAST FIRST
LINKED LIST LURUS DENGAN POINTER TUNGGAL
LINEAR SINGLY LINKED LIST 1. 1. ILUSTRASI 25 12 (1) 17 (2) LINK INFO LINK LAST INFO FIRST 10 (3) (4) atau LAST 10 (4) 17 (3) 12 (2) 25 (1) LINK INFO FIRST
25 12 17 LINK INFO LINK LAST INFO FIRST 10 Urutan insert (1) (2) (3) (4) Urutan delete (1) (2) (3) (4) atau LAST 10 17 12 25 Urutan insert (4) (3) (2) (1) Urutan delete (1) (2) (3) (4) LINK INFO FIRST
INSERT : Masuk, Simpan, Tulis DELETE : Keluar, Ambil, Baca atau Hapus
25 12 17 10 Urutan insert (1) (2) (3) (4) Urutan delete (1) (2) (3) (4) LAST 10 17 12 25 Urutan insert (4) (3) (2) (1) Urutan delete (1) (2) (3) (4) Pertanyaan : Mana yang mengikuti prinsip STACK, dan mana yang mengikuti prinsip QUEUE, Linked List ilustrasi-1 atau Linked List ilustrasi-2 LINK INFO LINK FIRST INFO Ilustrasi-2 LINK INFO Ilustrasi-1 LINK LAST INFO FIRST
Untuk selanjutnya Linked List yang akan diterangkan adalah Linked List yang diilustrasikan sebagai berikut : 25 12 17 10 (1) (2) (3) (4) LINK INFO LAST FIRST
25 12 17 10 (1) (2) (3) (4) LINK INFO LAST FIRST Keterangan : Dari ilustrasi diatas, dapat diterangkan sebagai berikut: Ada 4 simpul, simpul no (1) sampai dengan no (4) Setiap simpul (record) terdiri dari dua elemen (field) yaitu : Field INFO misal bertipe integer. Field LINK bertipe pointer Yang diilustrasikan dengan panah Untuk simpul no (1), Field INFO berisi nilai 25 Field LINK berisi alamat simpul no (2)
25 12 17 10 (1) (2) (3) (4) LINK INFO LAST FIRST Untuk Linked List yang akan dipelajari : Simpul pertama no (1) berada diujung paling kiri, dan ditunjuk oleh pointer FIRST. Simpul terakhir no (4) berada diujung paling kanan, dan ditunjuk oleh pointer LAST. LINK dari simpul terakhir diisi dengan NULL.
1. 2 PROSES 2 a. 2 b. 2 c. 2 d. 2 e. 2 f. 2 g. Pembuatan Record Awal (inisialisasi) Insert Kanan (Insert Akhir) Insert Kiri (Insert Awal) Insert Tengah Delete Kanan Delete Kiri Delete Tengah
LINK INFO Ilustrasi sebuah Simpul (Vertex, atau Node, atau Record) Simpul dengan 2 elemen atau field Nama field: LINK Tipe: pointer Isi: akan diisi dengan alamat record berikutnya Nama field: INFO Tipe: integer Isi: akan diisi data Tipe data tentunya disesuaikan dengan keperluan. Disini diambil saja contoh yang sederhana dimana data yang akan disimpan adalah bernilai integer.
LINK INFO Struktur sebuah Simpul Untuk ‘memberitahukan komputer ‘ bahwa kita memerlukan suatu Simpul atau record dengan tipe strukur demikian ini, perlu ditulis intruksi-instruksi sebagai berikut : typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST;
typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; Masih banyak cara penulisan lain untuk maksud yang sama. Disini diambil suatu cara yang dianggap paling sederhana. Disiapkan 3 buah variabel pointer, yaitu : P, FIRST dan LAST yang kesemuanya berkaitan dengan simpul atau record atau node yang bertipe Simpul
typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; Disini : Simpul Adalah nama tipe sebagaimana nama tipe yang telah disediakan oleh Bahasa C seperti : int, long int, float, dan sebagainya. Bila int adalah nama tipe suatu variable, maka Simpul disini adalah nama tipe dari suatu structure atau record, dimana structure tersebut terdiri dari dua field, yaitu : INFO yang bertipe integer (int), dan LINK yang bertipe pointer (pakai *) untuk structure tersebut.
Pembuatan Sebuah Simpul ( Baru ) Perhatikan kembali instruksi untuk menyiapkan tipe (struktur) sebuah simpul sebagai berikut : typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST;
Pembuatan Simpul ( Baru ) Instruksi untuk membuat sebuah record baru : P = (Simpul *) malloc(sizeof(Simpul)); Atau cukup digambar sabagai berikut : P LINK INFO P INFO Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut : “simpul yang ditunjuk oleh pointer P” yang dapat diilustrasikan sebagai berikut :
P = (Simpul *) malloc(sizeof(Simpul)); malloc : Maksudnya : memory allocation yaitu mengalokasikan memory sebesar atau seukuran (sizeof) yang diperlukan untuk Simpul
P = (Simpul *) malloc(sizeof(Simpul)); INFO LINK H 21 C 8 P Alamat simpul dicatat dalam variabel P (P bertipe Pointer untuk menunjuk Simpul)
INFO LINK 21 C 8 H 21 C 8 P LINK P INFO Ilustrasi fisik dalam memory diatas, dapat digambarkan dengan ilustrasi diagram sebagai berikut :
Contoh (sederhana) program selengkapnya untuk membuat sebuah record atau simpul yang alamat simpul tersebut dicatat dalam pointer P. #include <stdio. h> #include <stdlib. h> #include <ctype. h> typedef struct Node { int INFO; struct Node *LINK; }; typedef struct Node Simpul; Simpul *P, *FIRST, *LAST; void main() { int X; scanf(“%i”, &X); p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; }
void main() { int X; scanf(“%i”, &X); p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; } Field LINK berisi NULL 25 LINK Terbentuk sebuah simpul yang alamatnya disimpan dalam pointer P atau disebut simpul yang ditunjuk oleh pointer P P INFO artinya pointer LINK tidak menunjuk kesuatu alamat tertentu Nilai X (misal 25 hasil input sebelumnya) disimpan dalam elemen INFO
p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; P->INFO = X; dalam bahasa C, ditulis dengan dua karakter yaitu tanda - (minus) dan tanda > (tanda lebih besar) P 25 LINK maksudnya : Field INFO suatu simpul, yang simpulnya sedang ditunjuk oleh pointer P INFO P->INFO
p = (Simpul *)alloc(sizeof(Simpul)); P->INFO = X; P->LINK = NULL; P 0 0 0 0 LINK field LINK suatu simpul, yang simpulnya sedang ditunjuk oleh pointer P INFO P->LINK 25 karakter NULL nilai ASCIInya = 0 (nol)