Skip to content
Home » Deleting a node at specific position in a singly linked list

Deleting a node at specific position in a singly linked list

Below is the code to delete a node at specific position in a singly linked list

#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *next;
};
struct node *head;
void create_linked_list(int element){
struct node *temp=malloc(sizeof(struct node));
temp->data=element;
temp->next=NULL;
if(head==NULL){
head=temp;
}
else{
struct node *ptr=head;
while(ptr->next!=NULL){
ptr=ptr->next;
}
ptr->next=temp;
}
}
void del_rand(int pos){
struct node *current=head,*prev=head;
if(head==NULL){
printf("List is empty");
}else if(pos==1){
head=current->next;
free(current);
current=NULL;
}else{
while(pos!=1){
prev=current;
current=current->next;
pos--;
}
prev->next=current->next;
free(current);
current=NULL;
}
}
int main(){
create_linked_list(30);
create_linked_list(20);
create_linked_list(10);
create_linked_list(18);
del_rand(2);
//traversing the linked list
struct node *ptr=head;
while(ptr!=NULL){
printf("%d\t",ptr->data);
ptr=ptr->next;
}
}

OUTPUT:

30 10 18