# Delete a Linked List node at a given position in C++

In this tutorial, we are going to learn how to delete a node in singly linked list with the given position.

Let's see the steps to solve the problem.

• Write struct with data, and next pointer.

• Write a function to insert the node into the singly linked list.

• Initialize the singly linked list with dummy data.

• Initialize the position to delete the node.

• Iterate over the linked list and find the node with the given position to delete the node.

• Write a function to delete the node. Consider the following three cases while deleting the node.

• If the node is head node, then move the head to next node.

• If the node is middle node, then link the next node to the previous node

• If the node is end node, then remove the previous node link.

## Example

Let's see the code

Live Demo

#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
struct Node *next;
};
void insertNode(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->data = new_data;
}
void deleteNode(struct Node **head_ref, int position) {
return;
}
if (position == 1) {
free(temp);
return;
}
for (int i = 2; temp != NULL && i < position - 1; i++) {
temp = temp->next;
}
if (temp == NULL || temp->next == NULL) {
return;
}
struct Node *next = temp->next->next;
free(temp->next);
temp->next = next;
}
while (node != NULL) {
cout << node->data << "->";
node = node->next;
}
}
int main() {
cout << "Linked list before deletion:" << endl;
cout << "\nLinked list after deletion:" << endl;
return 0;
}

## Output

If you execute the above program, then you will get the following result.

Linked list before deletion:
5->4->3->2->1->
4->3->2->1->