Это стандартный связанный список с данными и следующими свойствами.
Это то, что я пытаюсь:
class Node {
constructor(data, next) {
this.data = data;
this.next = next;
}
}
class LinkedList {
constructor() {
this.head = null;
}
insertFirst(data) {
this.head = new Node(data, this.head);
}
size() {
let counter = 0, node = this.head;
while (node) {
counter++;
node = node.next;
}
return counter;
}
toArray() {
let node = this.head;
const result = [];
while (node) {
result.push(node.data);
node = node.next;
}
return result;
}
removeEven() {
let previous = this.head;
let node = this.head.next;
if (this.isEven(previous.data)) {
console.log('outside loop, found one: ' + previous.data)
this.head = this.head.next;
}
while (node) {
if (this.isEven(node.data)) {
console.log('found ' + node.data);
previous.next = node.next;
}
node = node.next;
}
}
isEven(num) { return num % 2 === 0 ? true : false; }
}
const q = new LinkedList();
q.insertFirst(16)
q.insertFirst(3)
q.insertFirst(4)
q.insertFirst(7)
q.insertFirst(5)
q.insertFirst(2)
q.insertFirst(1)
q.insertFirst(15)
q.insertFirst(18)
q.removeEven();
console.log(q.toArray());
И вывод:
outside loop, found one: 18
found 2
found 4
found 16
[ 15, 1, 2, 5, 7, 4, 3, 16 ]
Так что это только удаление первого значения, которое находится за пределами цикла, как я могу удалить другие значения?
РЕДАКТИРОВАТЬ: Добавлен полный код, однако, он просит меня добавить больше текста, и я неесть еще что добавить, кроме того, что я уже добавил.