Open In App

Implementation of Doubly Linked List in JavaScript

Last Updated : 24 Apr, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

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

Next Article

Similar Reads