我的删除功能有什么问题, 我可以删除头但不能删除任何其他节点。
SLinkedList.prototype.remove = function(value) {
if(!this.findValue(value) )return;
if(this.head.value === value){
this.head = this.head.next;
return;
}
var prev = null;
var cur = this.head;
while(cur.value !== value){
prev = cur;
cur = cur.next
}
prev.next = cur.next;
}
这是完整的JavaScript实现的链接 repl it
答案 0 :(得分:0)
fineValue()方法中有两个错误。首先你的while循环看着this.head,它永远不会改变。第二次你在第一次迭代后返回false。希望这可以帮助。
SLinkedList.prototype.findValue = function(value) {
if (!this.head) return false
var cur = this.head;
while (cur) { //Need to check cur not this.head
if (cur.value === value) {
return true
}
cur = cur.next
//return false; //Move this out of the while loop
}
return false
}