深耕专业教研,探索前沿技术
信息技术来源:浙江省新阵地教育联盟2026届第二次联考技术试题卷

第 12 题

答案与解析

本题解析

参考答案

D

程序分析

nums = [3, 1, 4, 2]
stack = []
while len(nums) > 0:
    if randint(0,1) == 0: # randint(a,b)随机生成一个[a,b]范围内的整数
        ...
    else:
        ...

程序从给定的nums和空列表stack开始。只要nums非空,就随机选择两个分支之一执行;循环在nums为空时结束。

nums.append(nums.pop(0))

pop(0)取出并删除首项,append再将它放到末尾,相当于队首元素出队后重新入队,nums的元素个数不变。重复这一操作可以使任意一个剩余元素来到队首。

if len(stack) > 0 and nums[0] > stack[-1]:
    stack[-1] = nums.pop(0)
else:
    stack.append(nums.pop(0))

这一分支从nums队首取走一个元素。stack以列表末端作为栈顶:若非空且新元素大于栈顶,就替换栈顶;否则将新元素追加到栈顶。替换只改变末项的值,不改变stack长度,追加则使长度增加1。

选项分析

A

可能。通过队首轮转,使元素按1、3、4、2的顺序进入处理分支,stack依次为[1]→[3]→[4]→[4,2]。以下列表均按栈底→栈顶记录。

B

可能。使元素按2、1、3、4的顺序处理,stack依次为[2]→[2,1]→[2,3]→[2,4]。3、4先后替换栈顶,栈底的2保留。

C

可能。使元素按2、3、4、1的顺序处理,stack依次为[2]→[3]→[4]→[4,1]。

D

不可能。1是所有元素中的最小值,它被处理时一定追加到末尾。此后若还有元素进入处理分支,新元素必然大于1,会直接替换末尾的1;若没有后续元素,1就保留在末尾。因此,最终只要保留1,它就只能是末项,不可能得到[1,4]。