这是一个带有数据和下一个属性的标准链表。
这就是我正在尝试的:
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 ]
所以它只删除循环外的第一个值,我如何删除其他值?
编辑:添加了完整代码,但是,它要求我添加更多文本,除了我已经添加的内容之外,我没有更多要添加的内容。
慕神8447489
喵喵时光机
慕仙森
相关分类