在当前由指针p指向的结点后面插入一个由q指向的结点

在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下( )
语句序列。 [ ]
A.p=q; p->next=q
B.p->next=q; q->next=p
C.p->next=q->next; p=q;
D.q->next=p->next; p->next=q;
B和D选项是一个意思吗

D正确
B选项,q->next = p; p->next = q; 的意思是将新节点的指针指向p节点,然后将p节点的指针指向新节点q,这会导致链表出现循环,不是我们所期望的结果,因此是错误的。
D选项,q->next=p->next; 这条语句将q节点的指针指向p节点指针所指向的下一个节点,也就是将q节点插入到了p节点之后。接下来,p->next=q; 这条语句将p节点的指针指向新插入的节点q,也就是p节点的指针指向了q节点,这样就完成了新节点的插入。

D正确
B是错的,p->next = q之后,链表就断了,原先在p后面的链表就找不到了啊。 而且这个选项p和q互相将next指向对方,这乱套了,死循环了