---
bab: 19
nomor halaman: 98
keterangan: Linked List adalah struktur data linear yang digunakan untuk menyimpan kumpulan elemen, yang disebut node. Setiap node dalam linked list berisi dua bagian, yaitu data atau nilai dari elemen yang diwakili dan referensi (pointer) ke node berikutnya dalam urutan. Node terakhir dalam daftar menunjuk ke null, menandakan akhir dari daftar.
# Linked List
Ini adalah struktur data umum yang ditemukan dalam semua bahasa pemrograman. Linked List sangat mirip dengan array biasa dalam JavaScript, hanya berfungsi sedikit berbeda.
Di sini setiap elemen dalam daftar adalah objek terpisah yang berisi tautan atau pointer ke elemen berikutnya. Tidak ada metode atau fungsi bawaan untuk Linked Lists dalam JavaScript sehingga seseorang harus mengimplementasikannya. Contoh dari linked list ditunjukkan di bawah ini. 
["satu", "dua", "tiga", "empat"]
**Jenis-Jenis Linked List**
Ada tiga jenis linked list yang berbeda:
1. **Singly Linked Lists:** Setiap node hanya berisi satu pointer ke node berikutnya.
2. **Doubly Linked Lists:** Ada dua pointer pada setiap node, satu ke node berikutnya dan satu ke node sebelumnya.
3. **Circular Linked Lists:** Circular linked list membentuk lingkaran dengan node terakhir yang menunjuk ke node pertama atau node lain sebelumnya.
# Tambah
Metode `add` dibuat di sini untuk menambahkan nilai ke linked list.
```javascript
class Node {
constructor(data) {
this.data = data
this.next = null
}
}
class LinkedList {
constructor(head) {
this head = head
}
append = (value) => {
const newNode = new Node(value)
let current = this.head
if (!this.head) {
this head = newNode
return
}
while (current.next) {
current = current.next
}
current.next = newNode
}
}
Hapus
Di sini, metode pop
dibuat untuk menghapus nilai dari linked list.
class Node {
constructor(data) {
this data = data
this.next = null
}
}
class LinkedList {
constructor(head) {
this head = head
}
pop = () => {
let current = this head
while (current.next.next) {
current = current.next
}
current.next = current.next.next
}
}
Sisipkan di Depan
Di sini, metode prepend
dibuat untuk menambahkan nilai sebelum anak pertama dalam linked list.
class Node {
constructor(data) {
this data = data
this.next = null
}
}
class LinkedList {
constructor(head) {
this head = head
}
prepend = (value) => {
const newNode = new Node(value)
if (!this.head) {
this head = newNode
}
else {
newNode.next = this head
this head = newNode
}
}
}
Geser
Di sini, metode shift
dibuat untuk menghapus elemen pertama dari Linked List.
class Node {
constructor(data) {
this data = data
this.next = null
}
}
class LinkedList {
constructor(head) {
this head = head
}
shift = () => {
this head = this.head.next
}
}