Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Insert a node at a specific position in a linked list Using C++ Please explain t

ID: 3904717 • Letter: I

Question

Insert a node at a specific position in a linked list Using C++

Please explain the insertNodeAtPosition and add comments to as many code lines as possible. Explain how you added a node at a specific position in a linked list. Keep the source code neat and simple. Explain all of the steps necessary to insert a node at a specific position.

You’re given the pointer to the head node of a linked list, an integer to add to the list and the position at which the integer must be inserted. Create a new node with the given integer, insert this node at the desired position and return the head node.

A position of 0 indicates head, a position of 1 indicates one node away from the head and so on. The head pointer given may be null meaning that the initial list is empty.

As an example, if your list starts as  and you want to insert a node at position with , your new list should be

Funtion Description Complete the function SinglyLinkedListNode in the editor. It must return a reference to the head node of your finished list.

SinglyLinkedListNode has the following parameters:

head: a SinglyLinkedListNode pointer to the head of the list

data: an integer value to insert as data in your new node

position: an integer position to insert the new node

Input Format

The first line contains an integer , the number of elements in the linked list.
Each of the next  lines contains an integer node[i].data.
The last line contains an integer .

Constraints

, where  is the  element of the linked list.

.

Output Format

Return a reference to the list head. Locked code prints the list for you.

Sample Input

Sample Output

Explanation

The initial linked list is 16 13 7. We have to insert 1 at the position 2 which currently has 7 in it. The updated linked list will be 16 13 1 7

*
* For your reference:
*
* SinglyLinkedListNode {
* int data;
* SinglyLinkedListNode* next;
* };
*
*/
SinglyLinkedListNode* insertNodeAtPosition(SinglyLinkedListNode* head, int data, int position) {


}

Explanation / Answer

SinglyLinkedListNode* insertNodeAtPosition(SinglyLinkedListNode* head, int data, int position) {
         SinglyLinkedListNode *p = new SinglyLinkedListNode(); //Creating a new node to store the value to be inserted
         p->data = data;
         p->next = NULL
         SinglyLinkedListNode *q = head;     // start traversing the linked list starting from head
         if (head == NULL)
            return head
         else {
             if (position == 0){
                  p->next = head;
                  head = p;
             }
             else {
                 int count = 0;
                 while (q!= NULL && count < position){   // Loop is running till we get to the position just before the place to be inserted
                      q = q->next;                       // or we reach the NULL.
                 }
                 if (q == NULL){                        // If is is NULL , it means position is beyond the length of the linked list.
                    cout << "Invalid position ";
                 }
                 else {
                     p->next = q->next;               // If it is not NULL , then it means we have got the position to insert.
                     q->next = p;
                 }
             }
         }
    
         return head;
}