请问如下题的解析是什么

在一个单链表HL中,若要各表头插入一个由指针p指向的结点,则执行( B )。
A.
HL=p; p->next=HL;
B.
p->next=HL->next; HL->next=p;
C.
p->next=HL; p=HL;
D.
p->next=HL; HL=p;

b选项是带有头节点的选项即开始的那个节点是必要的,即使空的也有这个节点。如果在表头插入,那确实是只能用b这个方法。先让要插入的节点p的next等于头节点的第一个节点,然后再让头节点的下一个节点等于p,即第一个节点设为p。其实不需要头节点的话,d勉强也是对的,不过后面需要返回p作为新的链表开始