методы в односвязном списке
у меня есть заполненный односвязный список
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 в зависимости от желаемого способа обработки ошибки границ индекса и прочих мелочей :)
}
//А так же не обработана ситуация когда индекс находится за пределами списка :)
}

