Open In App

Implementation of Doubly Linked List in JavaScript

Last Updated : 11 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
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






Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads