内容正文:
栈 队列专项选择
1.有1个队列,队首到队尾的元素依次为8,3,2,9,5。约定:T操作是指队列中1个元素出队后再入队,Q操作是指队列中1个元素出队。则经过TTTQTTQ系列操作后,队列中队首到队尾的元素依次为( )
A.2,9,5 B.2,5,8 C.5,8,2 D.8,3,2
2.某诊所叫号系统中,利用队列来存储当前正在排队病人的编号,head指向队首元素,tail指向队尾元素的下一个位置。若当前没有病人,则head与tail的值分别为( )
A.head!=tail B.head>tail C.head==tail D.head<tail
3.用一个大小为60的数组来做循环队列,循环队列需要牺牲队尾和队首之间一个存储空间来区分队空和队满,队首指针是head,队尾指针tail指向最后一个元素的下一个位置,则当head等于54,tail等于3的时候,先出队8个元素,再入队20个元素,则head和tail分别是( )
A.1,22 B.2,23 C.23,2 D.22,1
4. 一个序列的入栈顺序为 1,2,3,4,5,6,若 4 第一个出栈,则下列出栈序列中不可能的是( )
A. 4,5,3,6,2,1 B. 4,6,5,3,2,1 C. 4,3,5,2,6,1 D. 4,2,3,1,5,6
5.有如下Python程序段:
st=['3','8','5','a','9']
que=[0]*20 ; key=2
head=0 ; tail=0
for i in range(len(st)):
if "0"<=st[i]<="9":
que[tail]=(int(st[i])+key)%10
tail+=1
else:
head+=1
while head!=tail:
print(que[head],end="")
head+=1
程序运行后,输出的结果是( )
A.071 B.5071 C.507c1 D.'5','0','7','c','1'
6.有如下Python程序段:
a=[2,4,5,10,8,13,11,7,2,6]
que=[0]*len(a) ; k=int(input())
key=int(input()) ;msq=0 ; sq=0
head=0 ; tail=0
for i in a:
que[tail]=i
sq=sq+i
tail=tail+1
while sq>key or tail-head>=k:
sq=sq-que[head]
head=head+1
if sq>msq:
msq=sq
若输入k的值为3、key的值为20,则程序运行后,变量msq的值为( )
A.18 B.19 C.20 D.32
11、有如下Python程序段:
s="abbacabcccbb";sl=""
st=[""]*100;
top+=1;st[top]=s[0]
for i in s[1:]:
if i!=st[top]:
top+=l;st[top]=i
else:
top=top-l
while top>=0:
s1=st[top]+sl;top-=1
执行该程序段后,变量s1的值是( )
A .'acba' B . 'cbac' C . 'abca' D . 'cabc"
7.n个人站成一排,从左向右的编号分别为1——n,现在从左往右报数“1,2,1,2,……”,数到“1”的立即站到队伍的最右端,数到“2”的人出列,反复进行,直到n个人出列为止。
q=[i for i in range(9)]
head,tail=1,0
count=0
while head!=tail:
if count==2:
print(q[head],"->",sep="",end="")
else:
q[tail]=q[hea