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(); |
25 27 17 29