# Delete Nth Node of the Singly Linked List

Delete Nth Node of the Singly Linked List” is a basic problem exercise for beginners based on linked list. Here, we are given a linked list and our task to delete the node having with position ‘n’.

To do so, we need to traverse the linked list to node just before the nth node, then change the pointer of that node to next to next.

For example, we need to delete the 2nd node from the following linked list.

The steps required to delete the nth node from the linked list are as follows:

1. If Linked List is empty, return.
2. If the Node to be deleted is first node, then make head to the second node, if exist and delete the first node. If second node does not exist, then mark head of the Linked List to NULL.
3. Traverse to nth node of the linked list and mark pointer to just before the nth node know as ‘previous’ node.
4. If at any case there is less number of ‘n’ nodes in the linked list, return.
5. Else, point the pointer of previous node to the next of nth node.
6. Delete nth node of the linked list.

C++ Program to delete Nth node of the linked list is as follows:

```#include<bits/stdc++.h>
using namespace std;

/* Structure of node of the linked list */
struct node
{
int data;
struct node *next;
};

/* Function to Insert Node at the end of the Linked List */
void insert_end(struct node **head, int ele)
{
/* Creating a new node */
struct node *new_node;
new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = ele;
new_node->next = NULL;

/* Check whether the linked list is empty or not */

/* If Linked List is empty */
{
return;
}

/* If Linked List is not empty, then traverse the linked list
and point the pointer of the last node to the new node*/
struct node *temp = NULL;
while(temp->next != NULL)
temp=temp->next;
temp->next = new_node;
}

/* Function to delete Nth Node of the Linked List */
{
/* If Linked List is empty,  there is no node to delete, hence return */
return;
struct node *temp = *head , *prev = NULL;
/* If first node is to be deleted, then mark the head to
the next of first node, and delete first node*/
if(n==1)
{
delete temp;
return;
}
int i;
/* For Nth Node to be deleted, traverse the linked list to Nth node and store the pointer
to (n-1)th node, after that mark the pointer of (n-1)th node to the next of nth node. Then,
delete Nth Node */
for(i = 1; i < n && temp!=NULL; i++)
{
prev = temp;
temp=temp->next;
}
if(i < n)
return; // there are less number of nodes
prev->next = temp->next;
delete temp;
}

/* Function to print Nth Node*/
{
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
}
int main()
{
/* Inserting Some Nodes in the Linked List */
cout<<"The linked list elements before deleting 3rd node: \n";
cout<<"\n The linked list elements after deleting 3rd node: \n";
```OUTPUT: