Deletion operation in doubly linked list


Deletion - In a double linked list, the deletion operation can be performed in three ways as follows...
1.      Deleting from Beginning of the list
2.      Deleting from End of the list
3.      Deleting a Specific Node
Deleting from Beginning of the list - We can use the following steps to delete a node from beginning of the double linked list...
·Step 1: Check whether list is Empty (head== NULL)
·Step 2: If it is Empty then, display 'List is Empty!!! Deletion is not possible' and terminate the function.
·Step 3: If it is not Empty then, define a Node pointer 'temp' and initialize with head.
·Step 4: Check whether list is having only one node (temp previous is equal to temp next)
·Step 5: If it is TRUE, then set head to NULLand delete temp (Setting Empty list conditions)
·Step 6: If it is FALSE, then assign temp next to headNULL to head previous and delete temp.
Deleting from End of the list - We can use the following steps to delete a node from end of the double linked list...
·Step 1: Check whether list is Empty (head== NULL)
·Step 2: If it is Empty, then display 'List is Empty!!! Deletion is not possible' and terminate the function.
·Step 3: If it is not Empty then, define a Node pointer 'temp' and initialize with head.
·Step 4: Check whether list has only one Node (temp previous and temp next both are NULL)
·Step 5: If it is TRUE, then assign NULL to head and delete temp. And terminate from the function. (Setting Empty list condition)
·Step 6: If it is FALSE, then keep moving temp until it reaches to the last node in the list. (until temp next is equal to NULL)
·Step 7: Assign NULL to temp previous next and delete temp.
Deleting a Specific Node from the list - We can use the following steps to delete a specific node from the double linked list...
·Step 1: Check whether list is Empty (head== NULL)
·Step 2: If it is Empty then, display 'List is Empty!!! Deletion is not possible' and terminate the function.
·Step 3: If it is not Empty, then define a Node pointer 'temp' and initialize with head.
·Step 4: Keep moving the temp until it reaches to the exact node to be deleted or to the last node.
·Step 5: If it is reached to the last node, then display 'Given node not found in the list! Deletion not possible!!!' and terminate the fuction.
·Step 6: If it is reached to the exact node which we want to delete, then check whether list is having only one node or not
·Step 7: If list has only one node and that is the node which is to be deleted then set head to NULL and delete temp (free(temp)).
·Step 8: If list contains multiple nodes, then check whether temp is the first node in the list (temp == head).
·Step 9: If temp is the first node, then move the head to the next node (head = head next), set head of previous to NULL (head previous = NULL) and delete temp.
·Step 10: If temp is not the first node, then check whether it is the last node in the list (temp next == NULL).
·Step 11: If temp is the last node then set temp of previous of next to NULL (temp previous next = NULL) and delete temp(free(temp)).
·Step 12: If temp is not the first node and not the last node, then set temp of previous of next to temp of next (temp previous next = temp next), temp of next of previous to temp of previous (temp next previous = temp previous) and delete temp (free(temp)).







Displaying a Double Linked List - We can use the following steps to display the elements of a double linked list...
·Step 1: Check whether list is Empty (head== NULL)
·Step 2: If it is Empty, then display 'List is Empty!!!' and terminate the function.
·Step 3: If it is not Empty, then define a Node pointer 'temp' and initialize with head.
·Step 4: Display 'NULL <--- .
·Step 5: Keep displaying temp data with an arrow (<===>) until temp reaches to the last node
·Step 6: Finally, display temp data with arrow pointing to NULL (temp data ---> NULL).