Remove duplicate from sorted linked list

struct node {
    int data;
    struct node* next;
};
 
void removeDuplicates (struct node* head)
{
   struct node* current = head;
   struct node* next_next; 
   
   if(current == NULL) 
      return; 
 
   while(current->next != NULL){
      if(current->data == current->next->data) 
      {
          next_next = current->next->next;
          free(current->next);
          current->next = next_next;  
       }
       else{
          current = current->next; 
       }
   }
}

Delete element from Linked List

struct node {
    int data;
    struct node *next;
};
 
void deleteNode(struct node *head, struct node *n)
{
    if(head == n)
    {
        if(head->next == NULL){
            return;
        }

        // Node to be deleted is head
        head->data = head->next->data;
        n = head->next;
        head->next = head->next->next;
        free(n);
    }
 
    // When not first node
    struct node *prev = head;
    while(prev->next != NULL && prev->next != n)
        prev = prev->next;
  
    prev->next = prev->next->next;
    free(n);
}

Add element in Linked List

struct node
{
    int data;
    struct node *link;
} *head;

void add_beginning (int num) {
    struct node *temp;
    temp = (struct node *)malloc(sizeof(struct node));
    temp ->data = num;
    temp ->link = NULL;

    if (head == NULL) {
        head = temp;
   }
   else {
       temp ->link = head;
       head = temp;
   }
}

void add_end (int num) {
    struct node *temp;
    temp = (struct node *)malloc(sizeof(struct node));
    temp ->data = num;
    temp ->link = NULL;

    if (head == NULL){
          head = temp;
    }
    else {
         right = (struct node *)head;
         while(right ->link != NULL)
              right = right ->link;
         right ->link = temp;
    }
}         

Void add_middle (int c, int num){
    struct node *temp;
    temp = (struct node *)malloc(sizeof(struct node));
    temp ->data = num;
    temp ->link = NULL;
   
     if (head == NULL){
          head = temp;
    }
    else {
        struct node *right, *right1;
        right = head;
         right1 = head;
         for (int i = 0; i <c; i++)
             right = right ->link;
           
       right1 = right ->next;
       right ->next = temp;
       temp ->next = right1;
     } 
 }