第 1 题
数据结构已知带头结点的非空单链表 L 的头指针为 h,结点结构为data|next,其中 next 是指向直接后继结点的指针。现有指针 p 和 q,若 p 指向 L 中非首且非尾的任意一个结点。则执行语句序列q=p->next; p->next=q->next; q->next=h->next; h->next=q;的结果是( )。
A. 在 p 所指结点后插入 q 所指结点
B. 在 q 所指结点后插入 p 所指结点
C. 将 p 所指结点移动到 L 的头结点之后
D. 将 q 所指结点移动到 L 的头结点之后
查看答案与解析
参考答案:D
题目详解:
-
初始链表结构:头结点 指向首结点, 指向链表中某个非首非尾的结点, 未初始化。
-
执行语句
q = p->next;:- 指向 的直接后继结点。
-
执行语句
p->next = q->next;:- 将 的 指针指向 的直接后继结点,相当于从链表中“摘除” 结点。
-
执行语句
q->next = h->next;:- 将 的 指针指向原链表的首结点(即 所指向的结点)。
-
执行语句
h->next = q;:- 将头结点 的 指针指向 ,使得 成为新的首结点。
最终效果是将 所指结点移动到链表的头结点之后,成为新的首结点。
正确答案:D










