Remove Elements from a Linked List

Remove Elements from a Linked List
0

#1

Tell us what’s happening:

Why am I failing the tester? It says that currentNode is not defined.

Your code so far


function LinkedList() { 
  var length = 0; 
  var head = null; 

  var Node = function(element){ // {1} 
    this.element = element; 
    this.next = null; 
  }; 

  this.size = function() {
    return length;
  };

  this.head = function(){
    return head;
  };

  this.add = function(element){
    var node = new Node(element);
    if(head === null){
        head = node;
    } else {
        currentNode = head;

        while(currentNode.next){
            currentNode  = currentNode.next;
        }

        currentNode.next = node;
    }

    length++;
  }; 

  this.remove = function(element){
    var currentNode = head;
    var previousNode;
    if(currentNode.element === element){
        head = currentNode.next;
    } else {
        while(currentNode.element !== element) {
            previousNode = currentNode;
            currentNode = currentNode.next;
        }

        previousNode.next = currentNode.next;
    }

    length --;
  };

  // Only change code below this line

  // Only change code above this line
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/coding-interview-prep/data-structures/remove-elements-from-a-linked-list/


#2

Your code is correct.

The test is running the add method to set up the test and is encountering and error there. The error:

// running test
currentNode is not defined
currentNode is not defined
currentNode is not defined
// tests completed

When I change line 23 (in the add method) to:

       var currentNode = head;

It passes. It was failing because currentNode was being used in the add method but was never defined. It is a mistake in the problem code and not your fault. I’ll add it to the list of things that need to be changed.