Я работаю над проблемой Hackerrank и пытаюсь удалить все узлы, которые превышают определенное значение.
Это их базовая реализация
const SinglyLinkedListNode = class{
constructor(value) {
this.value = value;
this.next = null;
}
};
const SinglyLinkedList = class {
constructor() {
this.head = null;
this.tail = null;
}
insertNode(value) {
const node = new SinglyLinkedListNode(value);
if(!this.head) {
this.head = node;
} else {
this.tail.next = node;
}
this.tail = node;
}
};
Моя функция для удаления узловимеет следующий вид ...
SinglyLinkedList.prototype.removeNodes = function(listHead, x){
let currentNode = listHead;
while(currentNode !== null && currentNode.next !== null) {
let next = currentNode.next;
while (next !== null && next.value > x) {
next = next.next
}
currentNode.next = next
if(currentNode.next === null) {
break;
}
}
return currentNode
}
Параметры: listhead - ссылка на корневой узел и x - целочисленное значение для фильтрации связанного списка
Так, например, LLis 1-> 2 -> 4 -> 3 -> 5, и мне нужно удалить все узлы, больше чем x (3) и поддерживать целостность порядка LL.Результат должен быть 1 -> 2 -> 3.
Я не понимаю, почему я продолжаю получать this.tail.value = 5 вместо this.tail.value = 3, this.tail.next =null.
это REPL