深耕专业教研,探索前沿技术
信息技术来源:金华十校2026年4月高三模拟考试

第 11 题

答案与解析

本题解析

参考答案

A

程序分析

p, q = heada, headb
while p != -1 and q != -1:
    temp = linkb[q][1]
    
    q = temp

heada、headb是男生、女生链表的头指针,分别保存各链表首结点的下标。p、q取得这两个下标后,从各自首结点开始处理;结点记录中下标1的字段保存后继结点下标,-1表示没有后继。每轮先把当前女生结点的原后继下标保存到temp,最后用q=temp转向下一位女生。这样,修改当前女生结点的链接后,仍能找到原女生链表中的后续结点。

填空分析

加框处

本轮要把q指向的女生结点插在p指向的男生结点之后,使链接由“当前男生→下一位男生”变为“当前男生→当前女生→下一位男生”。

插入前,linka[p][1]保存下一位男生的下标。先执行② linkb[q][1] = linka[p][1],把女生结点的后继改为下一位男生;再执行③ linka[p][1] = q,把当前男生的后继改为当前女生。若先执行③,就会覆盖下一位男生的下标。

下一轮p应指向下一位男生,该下标已保存在linkb[q][1]中,所以执行⑥ p = linkb[q][1]。若执行⑤,p取得的则是③刚写入的女生下标。

女生处理完后q=-1,循环结束。男生人数较多,尚未插入女生的男生结点继续保留原有链接。