As i remember in question its given that it is NOT circular singly linked list..and two pointer head and tail are provided... and we can insert node at head...and delete node from tail ..and it works as queue ..
1) Insertion : O(1)
New_node->Link = Head; // store the address of head in the link part of New node
Head= New_Node; //Save new node as head
2) Deletion : O(n)
As tail is given so we can delete it in constant time..but we have to find new tail pointer and it require link list traversal as it is singly linked list ...so its O(n)
Correct me, if i am wrong ..