信息技术来源:2026年4月稽阳联谊学校高三联考
第 12 题
答案与解析
本题解析
参考答案
C
程序分析
rst = [0]*11; p = i = 0
while i<len(a): #①
if p != -1:
...
else:
...题干给出a的每个元素依次保存数据和后继结点下标,−1表示链表结束。rst各项初始化为0,p和i从0开始;循环条件限制i的取值范围,循环内根据p是否为−1选择分支。
if p != -1:
if a[p][0] % 2 == 0:
rst[i] += 1 #②
p = a[p][1] #③p不为−1时,a[p][0]取得当前结点的数据。若该数据为偶数,rst[i]加1;a[p][1]保存后继结点下标,将它赋给p就是沿链表移动到下一个结点。原程序把这两条语句放在同一个偶数判断分支内。
else:
print("该位置开始的链表中偶数个数有:",rst[i])
i += 1
p = i #④p为−1时输出rst[i],随后i加1,并令p取新的i,开始处理下一个起点。因此i记录本次遍历的起点下标,p记录当前结点下标,rst[i]用于累计从起点i出发遇到的偶数个数。
填空分析
③
初始i=p=0,a[0][0]=37为奇数,内层if中的计数和③均不执行,p保持为0;程序也无法进入p=−1的分支更新i,于是反复检查37,陷入死循环。
遍历链表时,只有计数需要判断奇偶,指针每次都应移向后继结点。因此③应向外退格一级,与内层if对齐,仍保留在if p != -1分支内:
if p != -1:
if a[p][0] % 2 == 0:
rst[i] += 1
p = a[p][1]
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_04_G3_jiyangliankao_q012
