diff --git a/Data Structures/linkedListClassAddAtIndex.js b/Data Structures/linkedListClassAddAtIndex.js new file mode 100644 index 0000000..13cdfad --- /dev/null +++ b/Data Structures/linkedListClassAddAtIndex.js @@ -0,0 +1,63 @@ +// https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/add-elements-at-a-specific-index-in-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++; + }; + + // Only change code below this line + this.addAt = (index, element) => { + if (index < 0 || index > length) { + return false; + } + let i = 0; + let previousNode = null; + let nextNode = head; + while (i < index && nextNode !== null) { + i++; + previousNode = nextNode; + nextNode = nextNode.next; + } + if (i != index) { + return false; + } + const node = new Node(element); + if (previousNode === null) { + head = node; + } else { + previousNode.next = node; + } + node.next = nextNode; + length++; + return true; + }; + // Only change code above this line +}