diff --git a/.eslintrc b/.eslintrc index 88af3ecf..021f64be 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,12 +5,14 @@ "env": { "jest/globals": true }, + "ignorePatterns": ["*.md", "*.png", "*.jpeg", "*.jpg"], "rules": { "no-bitwise": "off", "no-lonely-if": "off", "class-methods-use-this": "off", "arrow-body-style": "off", - "no-loop-func": "off" + "no-loop-func": "off", + "linebreak-style": ["error", "windows"] }, "ignorePatterns": ["*.md", "*.png", "*.jpeg", "*.jpg"], "settings": { diff --git a/src/data-structures/linked-list/LinkedList.js b/src/data-structures/linked-list/LinkedList.js index ba7d0e3e..243b1a76 100644 --- a/src/data-structures/linked-list/LinkedList.js +++ b/src/data-structures/linked-list/LinkedList.js @@ -63,27 +63,32 @@ export default class LinkedList { const index = rawIndex < 0 ? 0 : rawIndex; if (index === 0) { this.prepend(value); + return this; + } + // if we have single node in linked list and we have to insert a value we can insert at last + if (this.head === this.tail) { + this.append(value); + return this; + } + const newNode = new LinkedListNode(value); + let count = 1; + let currentNode = this.head; + + while (currentNode) { + if (count === index) break; + currentNode = currentNode.next; + count += 1; + } + // if there is a node in the position we want to insert + if (currentNode) { + newNode.next = currentNode.next; + currentNode.next = newNode; } else { - let count = 1; - let currentNode = this.head; - const newNode = new LinkedListNode(value); - while (currentNode) { - if (count === index) break; - currentNode = currentNode.next; - count += 1; - } - if (currentNode) { - newNode.next = currentNode.next; - currentNode.next = newNode; - } else { - if (this.tail) { - this.tail.next = newNode; - this.tail = newNode; - } else { - this.head = newNode; - this.tail = newNode; - } - } + /* if index exceeds the size of linked list we + will be appending the node at last or if the linked + list dosent exist we will be appending the value that + means inserting a new value into the linked list */ + this.append(value); } return this; } @@ -239,7 +244,9 @@ export default class LinkedList { * @return {string} */ toString(callback) { - return this.toArray().map((node) => node.toString(callback)).toString(); + return this.toArray() + .map((node) => node.toString(callback)) + .toString(); } /**