题6

题目

Q:在一个单链表中,已知 q 所指结点是 p 所指结点的前驱结点,若在 qp 之间插入结点 s ,则执行 ( ).
A. s->next = p->next; p->next = s;
B. p->next = s->next; s->next = p;
C. q->next = s; s->next = p;
D. p->next = s; s->next = q;

分析

A:如何理解q所指节点是p所指节点的前驱节点这句话
懂了,题目里说了这是一个单链表,也就是不会出现,一个节点被多个节点同时指着

p应该是一个dummy node只是一个地址来作为y的引用,也就是上面的y就是p
那么此时,c选项应该是

而D选项会破坏掉原本单链表的顺序结构,没有实现按照原本的顺序在插入,这就不是所谓的“插入”

插入后, 成为 的前驱,而 成为 的后继,选
注意
可能有读者认为选项 中的两条语句交换后才正确。
实际上,因为本题插入位置的前后结点都有指针指示 (这与前面介绍的插入操作是不同的),所以选项 中的语句顺序并不会造成断链。
在此提醒读者在学习过程中一定要多动脑思考, 而不要生搬硬套。