# HackerRank Insert a Node at a Specific Position in a Linked List | JS Solution

### Problem

HackerRank detailed problem description can be found here.

We need to create a function `insertNodeAtPosition(head, data, position) {}`. This function should:

• Create a new node using provided `data`
• Insert that newly created node at the provided `position` inside a Singly Linked List
• Lastly, return the `head` node

### Inputs & Outputs

``````/*
param {number} data
param {number} position
return {Node}
*/``````

### Test Case

I am using `data` of a string data type in the example below in order to make this algorithm just a bit more visual, though in the actual coded solution the `data` of a number data type will be used.

Imagine this is our initial linked list with 3 nodes in it. We are asked to create a new node with data `bacon` and insert it in the `position: 2`

This is how our linked list would look like after we are done with our function:

### Data Structures

Singly linked list, number

### Code

``````function insertNodeAtPosition(head, data, position) {
let count = 0;
let prev = null;
let current = head;
let newNode = new SinglyLinkedListNode(data);

while (count < position && current) {
prev = current;
current = current.next;
count++;
}

if (prev) {
prev.next = newNode;
newNode.next = current;
}