深耕专业教研,探索前沿技术
信息技术来源:浙江七校2026年普通高等学校招生全国统一考试模拟考试

第 11 题

答案与解析

本题解析

参考答案

C

程序分析

def move(p, m):
    c = lst[p][1]
    for i in range(m):
        t = lst[c][1]
        lst[c][1] = lst[t][1]
        (1)
        (2)

lst[k][0]保存下标为k的节点的数据,lst[k][1]保存其后继节点的下标,-1表示没有后继。图a中从头指针h=1出发,节点下标顺序为1→3→2→0→5→4;move(3,2)要把节点3之后的2、0、5逆序为5、0、2。

c=lst[p][1]使c指向待逆序段的第一个节点,循环中c本身不改变。每轮t=lst[c][1]取得节点c当前后继的下标,再令lst[c][1]=lst[t][1],使节点c跳过节点t,连接到t原来的后继,从而将节点t从原位置摘下。两处空缺需要完成摘下后的重新链接。

填空分析

(1)

为逐步逆序,应把摘下的节点t插到节点p之后、已处理部分之前。此时lst[p][1]仍保存节点p原后继的下标,先用lst[t][1] = lst[p][1]使节点t连接这个原后继,故填②。若此时先更新lst[p][1]为t,再用它设置t的后继,就会让t指向自身。

(2)

节点t已经连接到节点p的原后继,接着应让节点p连接节点t,填lst[p][1] = t,即①。两步完成后,每轮都把c后面的一个节点移到p之后。

本题p=3、c=2:第一轮摘下节点0,局部链接由3→2→0→5→4变为3→0→2→5→4;第二轮摘下节点5,变为3→5→0→2→4,与图b一致。