我的LinkedList删除方法有什么问题

时间:2017-02-16 06:30:54

标签: javascript data-structures linked-list

我的删除功能有什么问题, 我可以删除头但不能删除任何其他节点。

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

1 个答案:

答案 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
}