Wednesday, January 8, 2025
Google search engine
HomeLanguagesJavascriptImplementation of Doubly Linked List in JavaScript

Implementation of Doubly Linked List in JavaScript

This article will demonstrate the Implementation of Doubly Linked List In JavaScript.

A doubly linked list (DLL) is a special type of linked list in which each node contains a pointer to the previous node as well as the next node of the linked list.

Doubly Linked List in JavaScript

To create we have to create the following classes:

  • Node Class: To implement and create elements and link other elements.
  • Doubly Linked List Class: To store and access all nodes of the list.

Doubly LinkedList Node is constructed of the following items

  • A class named node
  • A class constructor, and
  • Data items/variables
    • data: to contain respective node value
    • next: to link the next node with the default value as null.
    • prev: to link the previous node with the default value as null.

Example:

Javascript




// Doubly Linked list Node
class Node {
 
    // Constructor to create a new node
    // next and prev is by default initialized as null
    constructor(val) {
     
        // To store the value
        this.data = val;
         
        // To link the next Node
        this.next = null;
         
        // TO link the previous Node
        this.prev = null;
    }
}


Doubly Linked List is constructed of the following items

  • Class Named DoublyLinkedList
  • A constructor to create the DLL
  • Data items/variables:
    • head: to store the starting node
    • tail: to store the ending node

Example:

Javascript




// Doubly Linked List
class DoublyLinkedList {
 
    // Constructor to create a new linked list
    constructor() {
     
        // To contain the first item of the list
        this.head = null;
     
        // To contain the last item of the list
        this.tail = null;
    }
}


Basic Operations in Doubly Linked Lists:

Method to Check if the List is Empty:

  • Check if the head is null or not and return result

Javascript




// To check if the list is empty
isEmpty() {
    if (this.head == null) return true;
    return false;
}


Method to Insert Element:

  • Create a new node with value as argument
  • Check if the head is null insert at head
  • Else insert the new node at the tail and shift tail pointer

Javascript




// Method to add item at the last of doubly linked list
addItem(val) {
         
    // Create a temporary variable
    let temp = new Node(val);
 
    // If the list is empty link assign
    // new node to both head and tail
    if (this.head == null) {
        this.head = temp;
        this.tail = temp;
    }
 
    // else add item to the tail and shift tail
    else {
        temp.prev = this.tail;
        this.tail.next = temp;
        this.tail = this.tail.next;
    }
}


To traverse and display the list:

  • Check is the list is not null
  • Use a current poiter to treaverse the list and display value using console.log()

Javascript




// To traverse and display the list
display() {
 
    // Check if the List is empty
    if (!this.isEmpty()) {
 
        // traverse the list using new current pointer
        let curr = this.head;
        while (curr !== null) {
 
            // Display element
            console.log(curr.data);
 
            // Shift the current pointer
            curr = curr.next;
        }
    }
}


Implementation of Doubly Linked List

Example: This example demonstrate the basic implementation of a link list.

Javascript




// Doubly Linked list Node
class Node {
    // Constructor to create a new node
    // next and prev is by default initialized as null
    constructor(val) {
        // To store the value
        this.data = val;
 
        // To link the next Node
        this.next = null;
 
        // TO link the previous Node
        this.prev = null;
    }
}
 
// Doubly Linked List
class DoublyLinkedList {
    // Constructor to create a new linked list
    constructor() {
        // To contain the first item of the list
        this.head = null;
 
        // To contain the last item of the list
        this.tail = null;
    }
 
    // To check if the list is empty
    isEmpty() {
        if (this.head == null) return true;
        return false;
    }
 
    // Method to add item at the last of doubly linked list
    addItem(val) {
         
        // Create a temporary variable
        let temp = new Node(val);
 
        // If the list is empty link assign
        // new node to both head and tail
        if (this.head == null) {
            this.head = temp;
            this.tail = temp;
        }
 
        // else add item to the tail and shift tail
        else {
            this.tail.next = temp;
            this.tail = this.tail.next;
        }
    }
 
    // To traverse and display the list
    display() {
 
        // Check if the List is empty
        if (!this.isEmpty()) {
 
            // traverse the list using new current pointer
            let curr = this.head;
            while (curr !== null) {
 
                // Display element
                console.log(curr.data);
 
                // Shift the current pointer
                curr = curr.next;
            }
        }
    }
}
 
// Create new Doubly Linked List
const dll = new DoublyLinkedList();
 
// Add elements in the list
dll.addItem(25);
dll.addItem(27);
dll.addItem(17);
dll.addItem(29);
 
// Display the list
dll.display();


Output

25
27
17
29




Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!

RELATED ARTICLES

Most Popular

Recent Comments