2024 数据结构 链表 选择题
第 1 题

已知带头结点的非空单链表 L 的头指针为 h,指针 p 指向 L 中间的一个链表结点(不是第一个和最后一个结点)。q=p->nextp->next=q->nextq->next=h->nexth->next=q。这段代码的功能是()。

链表

A. 把 q 指向的结点插入到 p 的后面 B. 把 p 指向的结点插入到 q 的后面 C. 把 p 指向的结点插入到 h 的后面 D. 把 q 指向的结点插入到 h 的后面

[tag_link]

正确答案:D

代码分解分析:

q = p->next;

现在 q 指向的是 p 的下一个结点。

p->next = q->next;

这一步将 q 从链表中“摘除”:原本是 p -> q -> q->next,现在变成了 p -> q->next,也就是说 q 不再出现在链表的原位置。

q->next = h->next;

这一步将 q->next 指向当前链表的第一个有效结点(注意是 h->next,即第一个结点,不是头结点)。

h->next = q;

q 接到头结点之后,也就是插入到链表头部(第一个有效结点之前)。操作的效果是:从链表中间删除了 q,然后把它插入到了头结点之后,也就是插入到链表第一个有效结点之前。所以这段代码的功能是:

q 指向的结点插入到 h 的后面 [tag_link]

正确答案选择 D。