Why my logic is not correct for delete at tail?

void deleteattail(nodehead)
{
node
temp=head;
node*prev=head;
while((temp->next)->next!=nullptr)
{
prev=temp;
temp=temp->next;
}
delete temp;
prev->next = nullptr;
}

this is wrong
basically ur temp points to the 2nd last node.
and prev to 3rd last node
so u have to do the following
prev->next = temp->next;
delete temp;