diff --git a/Data Structures/linkedListClassRemove.js b/Data Structures/linkedListClassRemove.js new file mode 100644 index 0000000..be21b79 --- /dev/null +++ b/Data Structures/linkedListClassRemove.js @@ -0,0 +1,56 @@ +// https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/remove-elements-from-a-linked-list + +function LinkedList() { + var length = 0; + var head = null; + + var Node = function (element) { + 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 { + var currentNode = head; + + while (currentNode.next) { + currentNode = currentNode.next; + } + + currentNode.next = node; + } + + length++; + }; + + this.remove = function (element) { + // Only change code below this line + let previous = null; + let current = head; + while (current !== null && current.element !== element) { + previous = current; + current = current.next; + } + if (current === null) { + return; + } + if (previous === null) { + head = current.next; + } else { + previous.next = current.next; + } + length--; + // Only change code above this line + }; +}