Pertemuan 10 Linked List Disusun oleh : PH. Prima Rosa, S.Si., M.Sc. Sri Hartati Wijono, S.Si. 2003/2004 Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 1 Review : Sifat Implementasi Linear List dengan Array Pencarian dapat dilakukan dengan mudah. Melihat elemen dalam list dapat dilakukan dengan mudah Membaca elemen dalam list dapat dilakukan dengan mudah Proses menyisipkan dan menghapus elemen tidak mudah. Mengapa? Elemen-elemen harus digeser Sulit untuk memperkirakan array yang harus dibuat. Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 2 Pert. 10 Struktur Data - FMIPA USD - 2003 1
Review : Sifat Implementasi Linear List dengan Array Bagaimana mengatasi kelemahan implementasi linear list dengan array? Satu elemen dengan elemen yang lain dihubungkan dengan suatu penghubung (link) Lahir gagasan linked list Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 3 Beberapa Struktur Data (b) Linked List (a) Matriks (c) Tree (d) Jaringan Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 4 Pert. 10 Struktur Data - FMIPA USD - 2003 2
Implementasi linked list (list terhubung) Linked list merupakan rantai elemen Tiap elemen punya : data link yang menunjuk ke elemen berikut pkepala (a) Suatu linked list dengan pointer : pkepala pkepala (b) Suatu linked list kosong Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 5 Node : Suatu elemen dari Linked List 1 node dgn 1 field data 1 node dgn 3 field data nomor nama id rangking Suatu structure dlm 1 node nama alamat telepon Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 6 Pert. 10 Struktur Data - FMIPA USD - 2003 3
Kepala & Node menggunakan Struktur Data Structure Kita perlu mendefinisikan 2 structure: satu untuk (head) list satu untuk node list (a) Structure utk (b) Structure utk node Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 7 Kepala dan Node : list integer sederhana struct intlist { struct node *; int ; }IntList; struct node { int data; struct node *link; }Node; 15 data 99 data 2 link link Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 8 Pert. 10 Struktur Data - FMIPA USD - 2003 4
Kepala dan Node: list nama struct IntList { struct node *; int ; }IntList; struct node { char *name; struct node *link; }Node; 2 Andi data link Boni data link Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 9 Kepala dan Node: structure sebagai data struct Intlist { struct node *; int ; }; 2 struct node { struct person *data; struct node *link }Node; struct person { char *nama; int umur; } Andi 15 data link Boni 19 data link Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 10 Pert. 10 Struktur Data - FMIPA USD - 2003 5
Operasi-Operasi Utama dalam Ordered Linked List Buat List Tambah node Di awal, tengah atau akhir Hapus node Di awal, tengah atau akhir Cari node Melacak list (Membaca node-node) Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 11 Operasi (1) Buat list (a) Sebelum buat list. = null list. = 0 (b) Setelah buat Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 12 Pert. 10 Struktur Data - FMIPA USD - 2003 6
Operasi (2) Tambah Node : Jika List Kosong (a) Sebelum -> link = list. list. = (b) Sesudah Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 13 Operasi Tambah Node: Di Awal List (a) Sebelum -> link = list. list. = (b) Sesudah Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 14 Pert. 10 Struktur Data - FMIPA USD - 2003 7
Operasi Tambah Node : Di Tengah List (a) Sebelum -> link = -> link -> link = (b) Sesudah Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 15 Operasi Tambah node: Di Tengah List Bandingkan operasi penambahan elemen dalam implementasi linear list dengan array dan dengan linked list Apa kesimpulan Anda? Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 16 Pert. 10 Struktur Data - FMIPA USD - 2003 8
Operasi Tambah Node : Di Akhir List (a) Sebelum -> link = ->link -> link = (b) Sesudah Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 17 Operasi (3) Hapus Node: Di Awal List (a) Sebelum pskrg list. = pskrg -> link (b) Sesudah Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 18 Pert. 10 Struktur Data - FMIPA USD - 2003 9
Operasi Hapus Node : Kasus Umum (a) Sebelum pskrg -> link = pskrg->link (b) Sesudah pskrg Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 19 Operasi (4) Pencarian node Lokasi di depan Lokasi di tengah Lokasi di akhir (a) Pencarian sukses (return true) Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 20 Pert. 10 Struktur Data - FMIPA USD - 2003 10
Operasi (4) Pencarian node < elemen pertama > elemen terakhir (b) Pencarian gagal (return false) Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 21 Operasi Melacak List Lokasi di depan Lokasi di tengah Lokasi di akhir Dilakukan proses pelacakan / pembacaan untuk setiap node Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 22 Pert. 10 Struktur Data - FMIPA USD - 2003 11
Mengapa harus dengan pointer? Pada beberapa bahasa pemrograman yang tidak memiliki tipe data pointer, linked list diimplementasikan dengan array Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 23 Struktur Data : Implementasi Linked Lists Dengan Variabel Dinamis Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 24 Pert. 10 Struktur Data - FMIPA USD - 2003 12
Alokasi Memori Dinamis Alokasi memori dinamis Memakai dan membebaskan memory selama proses eksekusi malloc Mengalokasikan se byte untuk digunakan sizeof digunakan untuk menentukan ukuran obyek Akan mengembalikan pointer ke sebuah lokasi di memori. Jika tidak ada memori yang tersedia akan mengembalikan NULL P = (Node *)malloc( sizeof( struct Node ) ); P akan menunjuk ke variabel dinamis baru bertipe node yang telah dibuat. Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 25 Alokasi Memori Dinamis free Membebaskan memori yang dibuat dengan malloc yang sudah tidak digunakan free (P); Pert. 10 Struktur Data - FMIPA USD - 2003 Hal. 26 Pert. 10 Struktur Data - FMIPA USD - 2003 13