内容正文:
第三章 线性数据的组织和存储2024—2025学年高中信息技术粤教版(2019)选修1
一、选择题
1.已知字符″a″的ASCⅡ码值为97,有如下Python程序段:
que=[" "]*20
head,tail=0,0
for i in range(3):
que[tail]=chr(97+i)
tail+=1
st=["b","c","d","a"]
top=3
while head<tail and top>-1:
if st[top]==que[head]:
head+=1
else:
que[tail]=st[top]
tail+=1
top-=1
print(que[head:tail])
执行该程序段,则输出的结果是( )
A.[’c’,’d’,’c’] B.[’c’,’c’,’d’]
C.[’c’,’’,’d’] D.[’c’,’d’]
2.栈S初始为空,元素a1,a2,a3,a4,a5,a6依次入栈,若出栈的顺序为a2,a4,a3,a6,a5,a1,则栈S的容量至少应该为( )
A.2 B.3 C.4 D.5
3.队列Q从队首到队尾的元素依次是1,3,5,栈S从栈底到栈顶的元素依次是2,4,6,现约定:A操作是指元素出队后入栈,B操作是指元素出栈后入队。经过BAAB系列操作后,队列中队首到队尾的元素依次为( )
A.5,2,1 B.5,2,4 C.5,6,1 D.5,6,3
4.有一T型结构,通道右侧是入口,左侧是出口,通道宽度仅能容纳一个小球通过,通道下部有一个能上下叠放两个小球、底部封闭的空间,如图所示。ABCDE五个小球依次从入口进入,若C球第一个从出口移出,B球第二个从出口移出。则移出序列不可能的是( )
A.CBDEA B.CBDAE C.CBEAD D.CBEDA
5.有如下Python程序段:
st=[0]*10
a=[4,6,1,7,2,8,6]
top=0;st[top]=a[0]
for i in range(1,len(a)):
while top!=-1 and a[i]<st[top]:
top-=1
top+=1
st[top]=a[i]
执行该程序段后,变量top的值为( )
A.-1 B.1 C.2 D.3
6.有一组数据4,2,6,3,1,5按序入栈,则出栈的顺序可能是( )
A.4,2,5,3,1,6 B.1,3,5,2,6,4
C.6,4,2,3,5,1 D.6,2,4,3,1,5
7.队列Q和栈S的初始值均为空,数字入栈先后顺序为1、2、3、4、5。P表示入栈,T表示元素出栈以后入队。在进行一系列P、T操作后,队列中从队首到队尾的元素依次为2、1、4、5,则对应的P、T操作是( )
A.PPTTPPTPT B.PTPTPPPTT C.PPTTPPPTT D.PPTTPTPPT
8.一个序列的入栈顺序为9,8,7,6,5,4。若7第一个出栈,则下列出栈序列中不可能的是( )
A.7,8,9,6,5,4 B.7,8,9,5,6,4
C.7,9,8,4,5,6 D.7,8,9,6,4,5
9.栈的特点是( )
A.先进后出 B.后进先出 C.随机存取 D.只能在一端插入或删除
10.以下有关栈和队列的说法正确的是( )
A.栈和队列都是先进后出 B.栈和队列都是先进先出
C.队列元素前面只有一个,后面有多个 D.栈和队列只允许在端点插入和删除数据
11.有一空栈S,对待进栈的数据元素序列a,b,c,d,e,f依次进栈、进栈、出栈、进栈、进栈、出栈的操作,操作完成后,栈S的栈顶元素是( )
A.c B.d C.e D.f
12.设栈S初始状态为空,元素A、B、C、D、E、F依次入栈,出栈的序列为D、F、E、C、B、A,则栈S的容量至少应该是( )
A.5 B.4 C.3 D.2
13.已知s ="我爱Python",下列说法正确的是( )
A.s[1:4]的值是"我爱Py" B.s[1:5]的值是"爱Pyth"
C.s[:-1]的值是"n" D.s[::-1]的值是"nohtyP爱我"
14.约定:T操作是指在队列中1个元素出队后再入队,E操作是指将1个元素入队,P操作是指队列中1个元素出队,队首指针head和队尾指针tail初始值均为0。则经过EETPETEP 系列操作后,队首指针head和队尾指针tail的值分别为( )
A.3 4 B.3 5 C.4 5 D.4 6
15.有一个栈,栈顶到栈底的元素依次为4,1,3,2若栈顶元素是偶数则先出栈,再将偶数整除2后重新入栈,若栈顶元素是奇数,则直接出栈。若入栈和出栈各算一个操作,则经过6次操作后,栈中余下的元素个数为( )
A.1 B.2 C.3 D.4
16.执行下列Python程序代码,当输入的数据为“ABCDE”,则输出的结果不可能的是( )
from random import randint
st = ["]*10; top=- 1; out="
s=input('s=')
while s:
flag = randint(0,1)
if flag ==1:
top+=1;st[top]=s[0]
s=s[1:]
elif top!=- 1:
out+=st[top];top-=1
while top!=- 1:
out +=st[top];top -=1
print(out)
A.CEDAB B.BDECA C.ABCED D.DCBEA
17.队列的特点( )
A.先进先出 B.先进后出 C.插入操作只能在队头进行 D.删除操作只能在队尾进行
18.栈s的最大长度为3,初始为空,经过一系列入栈、出栈操作,若元素入栈的顺序是a,b,c,d,e,f,则可能的出栈序列为( )
A.f,e,d,c,b,a B.c,b,a,f,e,d C.c,a,b,d,e,f D.c,e,d,b,a,f
19.居民身份证号码由十八位数字组成。例如“330486200501060018”,其中有八位数字代表出生日期(“20050106”)。现有某身份证号码字符串存储在变量t中,要求提取出生日期存储于变量day中,则下列选项中正确的是( )
A.day=t[6:13] B.day=t[7:14] C.day=t[6:14] D.day=t[7:15]
20.有如下Python程序段:
import random
a=['A','B','#','#','C','D','#']
stk=[0]*len(a);top=-l
for i in range(len(a)):
op=random. randint(0,1) # 随机生成0或1
if op= =l and a[i]!='#":
top+=l;stk[top]=a[i]
a[i]='#'
elif op= =0 and top!=-1 and a[i]= ='#':
a[i]=stk[top];top-=l
执行该程序段后,a的值不可能的是( )
A.['A','B','#','#','C','D','#'] B.['#','#','#','#','#','#','#']
C.['#','B','#','#','C';'D','A'] D.['#','#','A','B','C','D','#']
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查数据结构栈、队列相关知识。Que为队列,st为栈。代码段功能是:当队首元素与栈顶元素相等时,队首元素出队,栈顶元素出栈;当队首元素与栈顶元素不相等时,将栈顶元素出栈并将其入队。循环结束时,队列中存在三个元素’c’、’d’、’c’,栈已空。最后输出队列元素,即[’c’,’d’,’c’]。故本题答案是A选项。
2.B
【详解】本题考查栈。据出栈顺序a2,a4,a3,a6,a5,a1,我们需要分析栈的容量。依次入栈a1,a2,a3,a4,a5,a6:a1入栈,栈:[a1];a2入栈,栈:[a1,a2];a2出栈,栈:[a1];a3入栈,栈:[a1,a3];a4入栈,栈:[a1,a3,a4];a4出栈,栈:[a1,a3];a3出栈,栈:[a1];a5入栈,栈:[a1,a5];a6入栈,栈:[a1,a5,a6];a6出栈,栈:[a1,a5];a5出栈,栈:[a1];a1出栈,栈:[];在整个过程中,栈的最大容量为3。因此,栈S的容量至少应该为3。故答案为:B。
3.D
【详解】本题考查栈、队列相关内容。栈的特点是后进先出,队列的特点是先进先出。初始状态,队列Q从队首到队尾的元素依次是1,3,5,栈S从栈底到栈顶的元素依次是2,4,6。
第一次,执行“B”操作,栈S中元素(6)出栈后入队,此时,栈S从栈底到栈顶的元素依次是2,4;队列Q从队首到队尾的元素依次是1,3,5,6。
第二次,执行“A”操作,队列Q中元素(1)出队后入栈,此时,栈S从栈底到栈顶的元素依次是2,4,1;队列Q从队首到队尾的元素依次是3,5,6。
第三次,执行“A”操作,队列Q中元素(3)出队后入栈,此时,栈S从栈底到栈顶的元素依次是2,4,1,3;队列Q从队首到队尾的元素依次是5,6。
第四次,执行“B”操作,栈S中元素(3)出栈后入队,此时,栈S从栈底到栈顶的元素依次是2,4,1;队列Q从队首到队尾的元素依次是5,6,3。
则经过经过BAAB系列操作后,队列中队首到队尾的元素依次为:5,6,3。故本题答案是D选项。
4.C
【详解】本题考查栈和队列。栈和队列模拟T型结构。故AB进入栈,C出队,B出栈,D进栈,E出队。这时栈里是D,A。A在栈底,不可能先于D出栈。故不可能出现CBEAD。故选择C。
5.C
【详解】本题考查的是栈的操作。阅读程序可知,先入栈a[0],然后遍历列表a剩余元素,如果大于栈顶元素继续入栈,否则弹出栈顶元素。因此程序执行完后栈内元素为:126,故top值(top初始为0)为2。故选C。
6.D
【详解】本题主要考查栈的操作。选项A,5之后应该是1出栈;选项B,5之后应该是6出栈;选项C,6之后可以是2或3出栈;选项D可行,故本题选D选项。
7.A
【详解】本题考查栈的基本操作。我们已知队列中从队首到队尾的元素依次为2、1、4、5。在这个过程中,我们可以按照以下步骤来确定P和T的操作序列:将1、2入栈,然后依次出栈并入队,即PPTT。将3入栈,即P。将4入栈,然后出栈并入队,即PT。将5入栈,然后出栈并入队,即PT。此时,队列中的元素为:2、1、4、5。因此对应的P、T操作为:PPTTPPTPT。故答案为:A。
8.C
【详解】本题主要考查栈数据结构。一个序列的入栈顺序为9,8,7,6,5,4。若7第一个出栈,第二个出栈的不可能是9,8出栈后才可以出9,故出栈序列中不可能的是7,9,8,4,5,6,故本题选C选项。
9.A
【详解】本题考查栈。栈是一种LIFO(Last In First Out)数据结构,即最后一个进入的元素最先离开。故答案为:A。
10.A
【详解】本题主要考查栈和队列数据结构。栈和队列都是先进后出,队头只允许删除元素,队尾只允许插入元素,而栈只允许在栈顶插入和删除元素,故本题选A选项。
11.A
【详解】本题主要考查栈的操作。首先a和b进栈,接着b出栈,然后c和d进栈,再d出栈,此时栈s中元素分别是a和c,栈顶元素是c,故本题选A选项。
12.A
【详解】本题考查栈相关内容。栈的特点是先入后出。栈S 的初始状态为空,元素A、B、C、D、E、F依次入栈,出栈顺序为D、F、E、C、B、A。D出栈,说明D要先进栈,此时C、B、A已在栈内,栈的容量至少为4;D出栈后,F出栈,说明F需要先进栈,此时E、C、B、A在栈内,栈的容量至少为5;后续出栈序列为E、C、B、A,期间没有元素再入栈,栈的容量不会再增加,故栈的容量至少为5。本题答案是A选项。
13.D
【详解】本题考查Python字符串切片。A选项错误,s[1:4]表示从索引1到索引4(不包括4)的字符,即"爱Py"。B选项错误,s[1:5]表示从索引1到索引5(不包括5)的字符,即"爱Pyt"。C选项错误,s[:-1]表示从开始到倒数第一个字符之前的所有字符,即"我爱Pytho"。D选项正确,s[::-1]表示将字符串反转,即"nohtyP爱我"。故答案为:D。
14.D
【详解】本题考查队列操作相关内容。根据题目规定,T表示出队后入队,E表示入队,P表示出队,操作过程中指针变化情况如下所示:
操作序列EETPETEP
队列中指针初值head=tail=0
EETPETEP
head=0;tail=1
EETPETEP
head=0;tail=2
EETPETEP
head=1;tail=3
EETPETEP
head=2;tail=3
EETPETEP
head=2;tail=4
EETPETEP
head=3;tail=5
EETPETEP
head=3;tail=6
EETPETEP
head=4;tail=6
此队列共进行入队6次,出队4次,入队移动队尾指针及tail+6,出队移动head指针,即head+4,执行EETPETEP后(E入队,T(出队+入队),P出队)head=4,tail=6,故本题答案为D选项。
15.B
【详解】本题考查的是栈的操作。栈是先进后出,后进先出。栈顶到栈底的元素依次为4,1,3,2。4是偶数,第1次操作出栈;整除2后为2,第2次操作重新入栈;2是偶数,第3次操作出栈;整除2后为1,第4次操作重新入栈;1是奇数,第5次操作直接出栈;1是奇数,第6次操作直接出栈。经过6次操作后,栈顶到栈底的元素依次为3,2。选项B正确。
16.A
【详解】本题考查的是Python程序应用。分析程序可知,程序实现的是对字符串s进行入栈和出栈的操作,最后输出出栈的字符。选项B,入栈AB,出栈B,入栈CD,出栈D,入栈E,出栈ECA,符合栈的操作原则;选项C,入栈A,出栈A,入栈B,出栈B,入栈C,出栈C,入栈DE,出栈ED,符合栈的操作原则;选项D,入栈ABCD,出栈DCB,入栈E,出栈EA,符合栈的操作原则。排除BCD选项,故本题应选A。
17.A
【详解】本题主要考查队列数据结构。队列的特点是先进先出,插入操作只能在队尾进行,删除操作只能在队头进行,故本题选A选项。
18.B
【详解】本题考查栈的基本操作。栈是先进后出,题干中限定条件栈s的最大长度为3,初始为空。A选项f最先出栈,说明a,b,c,d,e,f需要全部入栈后,f才能出栈,但这种情况下栈长度需要为6,不符合题意,故A选项错误;B选项c最先出栈,此时a,b,c入栈,接着c,b,a依次出栈,此时栈s内为空,接下来f出栈,说明d,e,f需要入栈,接着f,e,d出栈,过程中栈内长度符合题意,故B选项正确;C选项c最先出栈,此时a,b,c入栈,接着c出栈,此时栈内a,b,由于b是栈顶元素,所以接下来出栈元素不可能是a,故C选项错误;D选项c最先出栈,此时a,b,c入栈,接着c出栈,此时栈内a,b,接下来e出栈,需要d,e入栈,此时栈内a,b,d,e,栈长度为4,不符合题意,故D答案错误。本题应选B。
19.C
【详解】本题考查字符串。居民身份证号码由十八位数字组成,其中代表出生日期的八位数字从第7位开始。在Python中,字符串的索引从0开始,切片操作时,左闭右开。所以要提取代表出生日期的八位数字,应使用t[6:14]。故答案为:C。
20.D
【详解】本题考查的是堆栈的操作。堆栈的操作原则先进后出。stk可以看做一个堆栈,阅读程序可知对列表a中的字母进行入栈和出栈操作。选项A没有进行入栈和出栈操作,有可能;选项B把字母全部压入栈,有可能;选项C对字母A进行入栈,最后出栈,有可能;选项D,先把字母A、B进行入栈,然后出栈,出栈顺序应为B、A,故选项D不可能。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$