Skip to main content
edited title
Link
TheCoffeeCup
  • 9.5k
  • 4
  • 38
  • 96

Deleting node form linked listfrom LinkedList

Source Link
hello
  • 203
  • 3
  • 7

Deleting node form linked list

I have this function to remove nodes that matches a certain criteria in the list. Initially when I wrote it, head node was not deleted if head->value was >= delete_value, but other nodes in the list were deleted, so I decided to write the last if statement to only delete and amend the list if head->value was >= delete_value. It works, but I'm not sure if this is normal?

void remove(List * & head, double value)
{
   if (head == NULL)
   {
    cout << "Empty List";
    return;
   }

   if (head != NULL && head->value != delete_value)
   {
    List* temp1 = head;
    List* temp2 = temp1->next;

       while (temp2 != NULL)
       {
          if (temp2->value >= delete_value)
          {
            List* temp3 = temp2;
            temp2 = temp2->next;
            temp1->next = temp2;
            delete temp3;
          }
          else
          {
            temp1 = temp2;
            temp2 = temp2->next;
          }
       }
   }

   //This deletes head node, if value is greater than or equal to delete_value
   if (head != NULL && head->value >= delete_value)
   {
    List*temp = head;
    head = head->next;
    delete temp;
   }
return;
}