这里我有一个问题就是B为啥不对,插入到一个双向循环链表,无非就是要确定本身的前驱节点和后继节点,还有就是前一个节点的后继,还有其后一个节点的前驱,而B和D之间就是最后两个的顺序换了(我就在想先说其后的前驱和先说其前的后驱顺序有啥规定吗?)而在牛客网的同志解释道B之所以错误是因为先进行了p->right的赋值,导致原来的p->right的节点无法给其left指针赋值,双向链表断裂,应先给p->right的节点left赋值为新节点。解释:B选项先把p->right=s,然后再p->right->left,因为前面已经指定了p->right是s了,所以p->right->left其实是s->left也就是p自身节点,s->left=s;我觉得本身就不可以这样赋值的。牛客网的同志的解释说的是B选项这样,其实只是除了指定了s的前驱和后继,还指定了p的后继,但是没有指定s后那个节点的前驱,所以导致断裂了。关于在单链表或者其它什么存储结构,删除或增加一个元素的时间复杂度是怎样的?要了解!!!4、在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行();A.s->next=p;p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;C.p->next=s;s->next=p;5、在一个单链表中,若删除p所指结点的后续结点,则执行(A)A.p->next=p->next->next,free(p);B.p=p->next;p->next=p->next->next,free(p);C.p->next=p->next,free(p);D.p=p->next->next,free(p);解释:3.