Options 1,2,3
could be implemented in O(1) time
since head,tail pointers is given
1) can insert node and get the address of that node into head pointer and next of that node contains next node address
2)As tail pointer is present new node address is stored in tail and even in last but 1 node of linked list
3)Could be deleted easily but pointing head to the next node
All this could be done with O(1)
But option 4 is done within O(n)
since even we have tail pointer which points to last node we need to get last but 1 node and next of that node is changed to null to do this we need to move from head pointer as it is single linked list we can't move back from tail pointer
so it take O(n) time