ADT DINAMIS SINGLY LINKED LIST DAN DOUBLE LINKED
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
Sub Pokok Bahasan l l l Konsep Dasar List (Senarai) Singly Linked List (Senarai Berkait Tunggal) Doubly Linked List (Senarai Berkait Ganda)
Konsep Dasar List (Senarai) l Senarai (list) dapat didefinisikan sebagai urutan dinamis (dynamic ordering) dari sesuatu L = (l 1, l 2, …, ln) dimana li adalah elemen ke-i pada List
List (Senarai) l l Dinamis elemen-elemen dalam List nilainya dan jumlahnya dapat berubah-ubah Elemen pertama dinamakan kepala (head) List, sedangkan elemen terakhir disebut ekor (tail) List Jumlah elemen pada List L ditulis sebagai |L| List sebelumnya memiliki |L| = n
List (senarai) l l List akan disimpan dalam bagian memori komputer yang dinamakan heap. Implementasi pada masa lampau , yang menggunakan (pascal , C ataupun C++) sebelum muncul Java biasanya menggunakan field terakhir dalam setiap record sebagai tempat penyimpanan alamat memori (pointer) untuk record berikutnya yang terkait dalam List
Saving Box di Bank 101 l l l 102 103 104 105 106 107 108 109 110 Analogi gambar saving box sebagai memori komputer. Jika kita ingin menyewanya, mka harus membayar sejumlah dana ke bank Bank akan mengisikan barang-barang berharga ke saving box 101, jika tidak cukup ke box 102, dst
MHS l l 1101 Dita 1104 Ami 1107 Fani 1101, 1104, 1107 disebelah kiri adalah alamat pengingat(memori) , dimana data nama mahasiswa tersimpan. Pada dasarnya kita tidak perlu mengetahui alamat ini secara eksplisit, karena interpreter Java kelak akan mengaturnya untuk kita
l l MHS adalah kepala (head) List yang menunjuk alamat dimana data nama mahasiswa disimpan 1101, 1104, 1107 adalah suatu tempat dimana ia menunjukkan alamat dari data yang berkaitan, sehingga kita bisa mengatakan bahwa List nama mahasiswa terdiri atas Dita, Ami serta Fani Null berarti List telah mencapai akhirnya Daerah-daerah kosong dalam gambaran pengingat (memori) diatas bisa berisi data apa saja
HEAD l l L 2 L 3 L 4 Tail Jika linked list hanya bergerak maju saja, double linked list dapat bergerak maju mundur. Keduanya membutuhkan metoda/fungsi yang bersifat baku, seperti : l l l L 1 Menambahkan (insert()/add()) suatu simpul Menghapus (remove()) suatu simpul (Node) Kedua metoda (fungsi) memiliki implementasi yang berbeda saat simpul yang ditambah atau dihapus berada di bagian kepala, di tengah ataupun di bagian ekor dari salah satu List
SINGLY LINKED LIST l l l Struktur data berbasis Node adalah elemen biasa yang memiliki satu atau lebih pointer (penunjuk) ke simpul-simpul lainnya, yang berisi alamat memori node-node lainnya Java tidak mengenal pointer, jadi perlakukan objek sebagai pointer Struktur Node memiliki elemen data atau elemen lain yang merujuk ke node lainnya Node yang ditunjuk disebut sebagai child node, sedang node itu sendiri disebut parent node Parent node Child node
Kode Java untuk Node (1) package singly. Linked. List; public class p. One. Child. Node{ protected Object data; // next merupakan ‘pointer’ ke node berikutnya. protected p. One. Child. Node next; // Konstruktor 1. public p. One. Child. Node(){ next = null; data = null; }
Pembahasan koding (1) l l l Bagian terbesar kelas p. One. Child. Node adalah metoda/fungsi set() dan get(). Data/atribut yang dimiliki adalah data dan next memiliki tipe yang sama dengan kelasnya (protected p. One. Child. Node) , sehingga dapat secara efektif menunjuk pada objek yang lain yang berasal dari kelas yang sama Metoda String to. String() merupakan metoda standar yang dimiliki Java untuk mencetak sesuatu. Tanpa metoda to. String(), tidak akan diperoleh representasi nyata atribut data milik kelas Node
Kode Java untuk Node (2) import singly. Linked. List. p. One. Child. Node; public class p. Linked. List{ protected p. One. Child. Node head; protected int number; public p. Linked. List(){ head = null; number = 0; } public boolean is. Empty(){ return head == null;
Pembahasan koding (2) l l l head merupakan node pertama dalam Linked List, number adalah jumlah keseluruhan node yang ada dalam Linked List number digunakan untuk metoda size(). Konstruktor p. Linked. List () digunakan untuk melakukan inisialisasi Metoda insert() bermanfaat untuk menyisipkan objek Metoda remove() , untuk menghapus objek tertentu dari Linked. List
Head Null TV Null VCD TV Compo VCD Null TV Null
DOUBLY LINKED LIST l l Kelemahan dari singly linked list adalah pointer(penunjuk) hanya dapat bergerak satu arah saja , dari head ke tail. Pada singly linked list tidak dapat mengakses node sebelumnya dari node yang saat ini diakses null Memori 0100 Aku 0200 Belajar 0300 Linked list …. . null
- Slides: 16