For this exercise you must get the tests to pass.
Given the following constructor functions:
function Node(val){
this.val = val;
this.next = null;
}
function SinglyLinkedList(){
this.head = null;
this.tail = null;
this.length = 0;
}
Implement the following on the SinglyLinkedList.prototype
This function should add a node to the end of the SinglyLinkedList. It should return the list so that the method can be chained.
This function should remove a node at the end of the SinglyLinkedList. It should return the node removed.
This function should add a node to the beginning of the SinglyLinkedList. It should return the list so that the method can be chained.
This function should remove a node at the beginning of the SinglyLinkedList. It should return the node removed.
This function should update the value of a node at a given index of the SinglyLinkedList. It should return true if the node is updated successfully, or false if an invalid index is passed in.
This internal/helper function should find a node at a specified index in a SinglyLinkedList. It should return the found node.
This internal/helper function should insert a node at a specified index in a SinglyLinkedList. It should return the new length of the SinglyLinkedList.
This function should remove a node at a specified index in a SinglyLinkedList. It should return the removed node.
This function should reverse all of the nodes in a SinglyLinkedList. It should return the reversed SinglyLinkedList.