LINKED LIST
Linked List (Daftar Berantai) Adalah struktur data yang terdiri dari rangkaian node yang setiap node terkait/terhubung dengan node selanjutnya Strukturnya sama dengan array yaitu tersusun dari banyak elemen dan bersambung
Array dan Linked List 1 2 3 1 2 3 TAIL HEAD Setiap node pada LL terdiri atas 2 bagian, yaitu : Data Penunjuk node selanjutnya
Macam LL Single LL setiap node hanya menunjuk node selanjutnya (hanya memiliki satu variabel pointer) Double LL setiap node dapat menunjuk node sebelum dan setelah (memiliki 2 variabel pointer)
Singly-Linked List (1) (a): basic linked list. Variabel head digunakan untuk melacak/ menandai list NIL (end of list) (b): Menambahkan variabel tail pada list untuk memudahkan pengaksesan elemen terakhir pada list
Singly-Linked List (2) (c): Menambahkan elemen ekstra pada list, sentinel, yang tidak digunakan untuk menyimpan data. Keuntungan: tidak perlu memodifikasi variabel head jika ada perubahan pada list. List (c) juga merupakan circular linked list (d): Circular linked list dengan hanya menggunakan variabel tail untuk menandai elemen terakhir pada list. Elemen pertama adalah 1 elemen setelah elemen terakhir.
Representasi memory dari linked list (variasi nomor b)
Buat class Elemen/Node Class ini digunakan untuk membuat objek/instance setiap node. Setiap node minimal terdiri dari 1 variabel penyimpan data dan 1 variabel penunjuk node berikutnya. class Node attr_accessor :data, :pnext def initialize(nilai) @data=nilai @pnext=nil end
Class LinkedList class SingleLinkedList attr_accessor :head, :tail class Node attr_accessor :data, :pnext def initialize(nilai) @data=nilai @pnext=nil end def initialize @head=nil @tail=nil
Algoritma Pengecekan Linked List Kosong Dilakukan untuk mengetahui apakah Linked List dalam kondisi kosong (tidak memiliki node) Jika HEAD dan TAIL bernilai NIL maka Linked List kosong, return TRUE Sebaliknya return FALSE
Kode Pengecekan Linked List kosong def isEmpty if @tail==nil and @head==nil return true else return false end
Algoritma Menambah Node pada Linked List Buat node BARU Isi info dengan nilai dan pnext=NULL Jika Linked List kosong (belum memiliki node) maka jadikan node BARU sebagai HEAD dan TAIL Tetapi jika Linked List tidak kosong maka Sambungkan TAIL ke node BARU Ubah node BARU sebagai TAIL
Code menambah Node def append(data) # method untuk menambah Node baru=Node.new(nilai) # membuat objek node BARU if isEmpty # cek apakah Linked List kosong @head=baru # node BARU sebagai HEAD @tail=baru # node BARU sebagai TAIL else # jika Linked List tidak kosong @tail.pnext=baru # sambungkan TAIL dengan BARU @tail=baru # jadikan node BARU sebagai TAIL end
Algoritma menampilkan isi Linked List Buat sebuah node TEMP Node TEMP menunjuk alamat yang sama dengan node HEAD Selama temp!=NULL, tampilkan isi node Update TEMP menjadi node berikutnya
Code view Linked List def view temp=@head while temp!=nil puts temp.data temp=temp.pnext end
Code main require_relative "SingleLinkedList" myList=SingleLinkedList.new myList.append("Amin") myList.append("Budi") myList.append("Citra") myList.view
Tugas 1 Gambarkan ilustrasi untuk menambah node diawal Linked List (prepend). Catat langkah-langkah yang harus dilakukan. Gambarkan ilustrasi untuk mencari nilai data tertentu pada Linked List. Catat langkah-langkah yang harus dilakukan. Gambarkan ilustrasi untuk menghapus node dengan nilai data tertentu pada Linked List. Catat langkah-langkah yang harus dilakukan.