Intro
Setelah membahas Singly Linked List
pada artikel sebelumnya, maka selanjutnya saya akan membahas
tentang varian lain pada Linked List
yaitu Doubly Linked List
. Lalu apa beda dan kelebihannya
dibandingkan dengan Singly Linked List
? Namun sebelumnya Anda harus mengerti apa itu Linked List
yang sudah ditulis pada artikel sebelumnya. Jika sudah mari kita bahas:
Perbedaan
TIdak jauh berbeda dengan yang Singly
pada varian ini, hanya saja untuk setiap node
memiliki
properti tambahan yaitu prev
. Sehingga node
pada doubly
memiliki 3 properti yaitu value
untuk menampung
nilai node, next
untuk menampung referensi node selanjutnya, dan prev
untuk menampung referensi nilai sebelumnya.
Berikut contoh kode pada class Node
:
class Node {
constructor(value) {
this.value = value;
this.next = null;
// Properti baru `prev` untuk referensi node sebelumnya
this.prev = null;
}
}
Untuk constructor class Doubly Linked List
sama seperti Singly
karena yang berbeda
hanya pada Node
, jadi saya tidak perlu menambahkannya lagi pada artikel ini.
Method
Untuk methodnya sendiri juga hampir sama seperti Singly
, namun hanya ditambahkan properti
prev
untuk mereferensikan node
sebelumnya.
push
push(value) {
// Buat node baru
const newNode = new Node(value)
// Lakukan pengecekan apabila list kosong
if(this.head === null) {
this.head = newNode
this.tail = this.head
}
// Apabila tidak kosong maka tambahkan node baru dari tail
else {
this.tail.next = newNode
// Disini ada perbedaan yaitu perlu mereferensikan nilai prev
// pada node terlebih dahulu, sebelum tail diganti dengan node baru
newNode.prev = this.tail
this.tail = newNode
}
// Selebihnya sama
this.length++
return this
}