методы в односвязном списке

у меня есть заполненный односвязный список

     class Node{
            constructor(value,next=null) {
                this.value=value
                this.next=next
            }
        }
        
    class LinkedList {
        constructor() {
            this.head = null
            this.tail = null
        }

Мне необходимо реализовать метод:

insert(index,value){...} который будет вставлять новый элемент по указанному индексу,а индекс старого элемента и всех последующих будет сдигаться на +1

моя реализация:

    let currentNode = this.head
            let count=0
    
            while(currentNode.next){
                if(count===--index){
                    currentNode.value=value
                    currentNode.next=currentNode.next.next
                    return null
                }
                currentNode=currentNode.next
                count++
            }

наш список

введите сюда описание изображения

при вызове функции insert(3,9) удаляются элементы с индексом 1 и 2

помогите исправить

введите сюда описание изображения


Ответы (2 шт):

Автор решения: MBo

Чтобы вставить новый узел после трёх имеющихся, надо встать на head и два раза перейти на next. Потом создать новый узел, передав ему тот же next, что и у текущего узла. Потом у текущего назначить next на новый узел

→ Ссылка
Автор решения: Владимир Клыков

Примерно так:

let currentNode = this.head
while(currentNode.next){
  --index;
  currentNode=currentNode.next
  if(index == 0){  //Возможно тут немного ошибся и тут должен быть не ноль
    let NewNode = new(Node)
    NewNode.value = value
    NewNode.next = currentNode.next
    currentNode.next = NewNode
    return // или break в зависимости от желаемого способа обработки ошибки границ индекса и прочих мелочей :)
  }
  //А так же не обработана ситуация когда индекс находится за пределами списка :) 
}
→ Ссылка