Menerapkan Daftar Tertaut dalam JavaScript

Jan 13 2023
Daftar tertaut adalah struktur data yang sangat mirip dengan array, kecuali kenyataan bahwa data tidak disimpan di satu lokasi memori. Dalam JavaScript, setiap elemen (simpul) dari daftar tertaut adalah objek yang menunjuk ke elemen berikutnya (simpul) yang juga menunjuk ke elemen berikutnya dari daftar tertaut, hingga elemen terakhir tidak menunjukkan apa-apa (akhir dari daftar tertaut) .

Daftar tertaut adalah struktur data yang sangat mirip dengan array, kecuali kenyataan bahwa data tidak disimpan di satu lokasi memori. Dalam JavaScript, setiap elemen (simpul) dari daftar tertaut adalah objek yang menunjuk ke elemen berikutnya (simpul) yang juga menunjuk ke elemen berikutnya dari daftar tertaut, hingga elemen terakhir tidak menunjukkan apa-apa (akhir dari daftar tertaut) .

Titik masuk ke daftar tertaut disebut kepala. Kepala adalah referensi ke simpul pertama dalam daftar tertaut. Node terakhir pada daftar menunjuk ke nol. Jika daftar kosong, kepala adalah referensi nol.

Secara gambar, daftar tertaut tampilan terbaiknya sebagai berikut;

Ini juga dapat dilihat sebagai;

// Skeletal View of a Linked List

const list = {
  head: {
    data: 12,
    next: {
      data: 99,
      next: {
        data: 37,
        next: null
      }
    }
  }
}

//  Joshua Ajagbe

  1. Pemutar Musik — Lagu di pemutar musik ditautkan ke lagu sebelumnya dan berikutnya. Jadi Anda dapat memutar lagu baik dari awal maupun akhir daftar.
  2. Penampil gambar — Gambar sebelumnya dan berikutnya ditautkan dan dapat diakses dengan tombol berikutnya dan sebelumnya.
  3. Halaman sebelumnya dan berikutnya di browser web — Kami dapat mengakses URL sebelumnya dan berikutnya yang dicari di browser web dengan menekan tombol kembali dan berikutnya karena ditautkan sebagai daftar tertaut.

Ada tiga jenis utama linked list, yaitu Single Linked List, Doubly Linked List, dan Circular Linked List. Untuk tujuan pembelajaran ini, kami akan mengimplementasikan Singly Linked List.

Seperti yang dinyatakan sebelumnya, daftar tertaut hanyalah kombinasi elemen (node) yang saling menunjuk. Unit dasar dari linked list adalah node. Sebuah node menampung data dan penunjuk ke node berikutnya, diimplementasikan sebagai berikut;

// A Singly Linked List Node
function SinglyLinkedListNode(data) {
  this.data = data;
  this.next = null; // the pointer to the next node...
}

//  Joshua Ajagbe

function SinglyLinkedList() {
  this.head = null;
  this.size = 0; // this helps keep track of the size of the linked list.
}

SinglyLinkedList.prototype.insert = function (data) {
  // checking if linked list is empty
  if(this.head === null){
    this.head = new SinglyLinkedListNode(data);
  } else {
    let temp = this.head;
    this.head = new SinglyLinkedListNode(data);
    this.head.next = temp;
  }
  this.size++; // updating the linked list size.
}

// Let's add method to check if the linked list is empty here. Bonus 
SinglyLinkedList.prototype.isEmpty = function () {
  return this.size === 0;
}

//  Joshua Ajagbe

Menghapus node dari daftar tertaut diimplementasikan dengan menghapus penunjuknya. Ini berarti bahwa simpul sebelumnya yang menunjuk ke simpul (yang akan dihapus) akan dibuat untuk melewatkan simpul (yang akan dihapus), sehingga menunjuk ke simpul berikutnya.

SinglyLinkedList.prototype.remove = function (data) {
  let currentHead = this.head;
  if(currentHead.data === data) {
    this.head = currentHead.next;
    this.size--;
  } else {
    let prev = currentHead;
    while(currentHead.next) {
      if(currentHead.data === data){
        prev.next = currentHead.next;
        prev = currentHead;
        currentHead = currentHead.next
        this.size--;
        break;
      }
      prev = currentHead;
      currentHead = currentHead.next;
    }
  }
}


//  Joshua Ajagbe

Saya harap ini membantu Anda dalam memahami Daftar tertaut dan penerapannya.

Jika Anda menginginkan penjelasan lebih lanjut, Anda dapat menghubungi saya di LinkedIn:https://www.linkedin.com/in/joshua-ajagbe/atau email saya di [email protected].

Selamat Belajar