Removing Elements from a Double Linked List using Javascript

Web DevelopmentFront End TechnologyJavascript

Removing an element is very easy in a linked list. We just need to get rid of the node we want to remove, ie, lose its reference. There are 3 cases we need to consider −

  • Removing an element from head: In this case, we can simply assign head = head.next and remove the previous link from the next element. This way we'll lose the reference of the first element. And out head will start pointing to the second element.
  • Removing an element from the tail: In this case, we can simply assign the node.next of second last node to be null and we'll get rid of the last element from the list. We also update the tail to point to a current node.
  • Removing an element from in between: This is more tricky. In this case, we'll have to make the node before the node we want to remove, to directly point to the node after the node we want to remove. So, prevNode.next = node.next and node.next.prev = prevNode will do this for us.

Now let's see an illustration of this −

Now let's have a look at how we'll implement this − 

Example

remove(data, position = 0) {
   if (this.length === 0) {
      console.log("List is already empty");
      return;
   }
   this.length--;
   let currNode = this.head;
   if (position <= 0) {
      this.head = this.head.next;
      this.head.prev = null;
   }
   else if (position >= this.length - 1) {
      this.tail = this.tail.prev;
      this.tail.next = null;
   }
   else {
      let iter = 0;
      while (iter < position) {
         currNode = currNode.next;
         iter++;
      }
      currNode.next = currNode.next.next;
      currNode.next.prev = currNode;
   }
   return currNode;
}

Example

You can test this using −

let list = new LinkedList();
list.insert(10);
list.insert(20);
list.insert(30);
list.remove(1);
list.display();
list.insert(15, 2);
list.remove();
list.display();

Output

This will give the output −

20 <->
30 <->
30 <->
15 <->
raja
Published on 27-Jun-2018 14:47:09
Advertisements