Removing elements from a doubly linked list is also very similar to a linked list. The only difference is that we need to set the previous pointer as well. Let's take a look at the implementation:
removeAt(index) { if (index >= 0 && index < this.count) { let current = this.head; if (index === 0) { this.head = current.next; // {1} // if there is only one item, then we update tail as well NEW if (this.count === 1) { // {2} this.tail = undefined; } else { this.head.prev = undefined; // {3} } } else if (index === this.count - 1) { // last item NEW current = this.tail; // {4} this.tail = current.prev; // {5} this.tail.next = undefined; // {6} } else { current = this.getElementAt(index); // {7} const previous ...