A)Insertion at the front of the linked list.
new_node->next=head;
head=new_node;
$\Theta \left ( 1 \right )$
B) Insertion at the end of the linked list.
Tail->next=new_node;
new_node->next=NULL;
$\Theta \left ( 1 \right )$
C) Deletion of the front node of the linked list.
Next_node=Head;
Head=Next_node->next;
free(Next_node);
$\Theta \left ( 1 \right )$
D)Deletion of the last node of linked list
Here although we have tail pointer but it will be of no use because there is no previous pointer (as it is single linked list).we need to have second last pointer so that we make it the last pointer and can free the last pointer i.e deleting the last node.So we need to traverse the whole linked list making it $\Theta \left ( n \right )$.
struct node *p,*prev;
p=head;
while(p)
{
prev=p;
p=p->next;
}
prev->next=NULL;
free(p);
ANSWER D)