Pertemuan 10-12 Linked list jual [Valdo] Lunatik Chubby Stylus
Review array Array memiliki kelemahan diantaranya : Pada unsorted array, searching lambat Pada sorted array, insert baru lambat Pada kedua jenis array, delete sangat lambat Ukuran array tidak dapat diganti setelah inisalisasi pertama
Link list Kumpulan elemen Linier Node/ simpul Isi node: Dinamis Info Pointer/ alamat simpul berikutnya Dinamis
Node / simpul Node / simpul / link berisi : Info / data Alamat node selanjutnya Sebuah node dalam java dapat diimplementasikan sebagai sebuah class yang berisi Beberapa variable untuk data Satu variable link yang menunjukkan link selanjutnya (self reference) Dalam hal ini objek link tidak berisi data, melainkan hanyalah reference ke link yang lain
Ilustrasi Singly Linked List Data 1 Next node Data 2 Data 3 Data 4 NULL
Class linklist
Class linklist
Method insertFirst Insert link pada awal list Posisi yang paling mudah untuk insert link, karena pointer first mengarah ke first link Algoritma Set next pada link baru ke old link first Ganti first mengarah ke link baru
Method insertFirst
Method deleteFirst Kebalikan dari insertFirst Algoritma Buat link temp dan arahkan ke first Rerouting first ke second link (second link dapat ditemukan dengan melihat ke next dari first) Kembalikan nilai temp atau hapus jika tidak dibutuhkan
Method deleteFirst
Method displayList Menampilkan seluruh isi node/simpul/link dari linked list Algoritma Buat link current dan arahkan ke first Ganti current ke link selanjutnya Gunakan fungsi displayLink dari class link Lakukan hingga current = null (akhir list)
Method displayList
Main method
output List (first-->last): {88, 8.99} {66, 6.99} {44, 4.99} {22, 2.99} Deleted {88, 8.99} Deleted {66, 6.99} Deleted {44, 4.99} Deleted {22, 2.99} List (first-->last):
Method find Cara kerjanya seperti method displayList() Algoritma Create link current dan arahkan ke first Ganti current ke link selanjutnya (dengan mengganti current = current.next) Pada setiap link, cek apakah isi data adalah key yang dicari Jika hingga akhir list tanpa ketemu key yang dicari, return null
Method find
Method delete Seperti method find Bedanya link tidak Cuma mengarah ke link selanjutnya, tetapi juga perlu menyimpan link sebelumnya (previous) Karena jika dilakukan delete, maka perlu konek link sebelumnya ke next dari link yang didelete
Method delete
Main method 2
List (first-->last): {88, 8.99} {66, 6.99} {44, 4.99} {22, 2.99} Found link with key 44 Deleted link with key 66 List (first-->last): {88, 8.99} {44, 4.99} {22, 2.99}
Macam-macam List Singly linked list Doubly linked list Singly circular linked list Doubly circular linked list
Single vs doubly
Insert at beginning
Insert at arbitrary position
Delete a node
Circular Linked List
Stack – Linked List Jika sebuah linked list SELALU menambahkan node baru dan menghapus node lama dari salah SATU ujungnya saja (posisi Head ataukah Tail) STACK. TOP = head untuk single linked list. TOP = tail untuk double linked list. HOW?
Push Operation
Pop Operation
Queue – Linked List Jika sebuah linked list SELALU menambahkan node baru di ujung Tail dan SELALU menghapus node lama dari ujung Head QUEUE. Front = head. Rear = tail. Single atau Double linked list?
Enqueue Operation
Dequeue Operation