31 Jul 2024

Doubly Linked List

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
}