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 head, NULL 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).