2023 数据结构 链表 选择题
第 2 题

现有非空双向链表 L,其结点结构为:

2018_Q7_3

prev 是指向前直接前驱结点的指针,next 是指向直接后继结点的指针。若要在 L 中指针 p 所指向的结点(非尾结点)之后插入指针 s 指向的新结点,则在执行了语句序列: s->next=p->next; p->next=s,后,还要执行( )。

链表

A. s->next->prev=p; s->prev=p; B. p->next->prev=s; s->prev=p; C. s->prev=s->next->prev; s->next->prev=s; D. p->next->prev=s->prev; s->next->prev=p;

[tag_link]

正确答案:C

主要考察双链表的插入操作,解决这类问题可在纸上画出具体的双链表进行模拟。因为s->next已经赋值为p的后一个结点,同时p->next指针已经赋值为s。所以只需要处理s->next->prev和s->next->prev的赋值,s->prev需要指向p,s-next->prev需要指向s。因为p->next和s指向同一个结点,所以可以用p->next代表s。故本题的正确选项为 C。