Algorithm for Deleting the Last Node in Singly Linked List

Step 1: IF START = NULL 
           Write UNDERFLOW 
           Go to Step 8 
        [END OF IF] 
Step 2: SET PTR = START 
Step 3: Repeat Steps 4 and 5 while PTR NEXT != NULL 
Step 4:  SET PREPTR = PTR 
Step 5:  SET PTR = PTR NEXT 
        [END OF LOOP] 
Step 7: FREE PTR 
Step 8: EXIT


  • In Step 1, we first check for the underflow condition.
  • In Step 2, we take a pointer variable PTR and initialize it with START. That is, PTR now points to the first node of the linked list.
  • In the while loop, we take another pointer variable PREPTR such that it always points to one node before the PTR.
  • Once we reach the last node and the second last node, we set the NEXT pointer of the second last node to NULL, so that it now becomes the (new) last node of the linked list.
  • The memory of the previous last node is freed and returned back to the free pool.