内容正文:
选择性必修1 数据与数据结构专题检测
专题三 检测卷
一、选择题(本大题共12小题,每小题2分,共计24分。每题只有一个正确答案,多选、不选、错选均不给分)
1. 下列有关字符串的描述,正确的是( )
A. 字符串负索引从字符串的末端开始编号,第一个位置为-1
B. 字符串的长度是指字符串中所包含的字符个数,但不包括空格
C. 字符串的元素个数是有限的,只能由1个或多个字符组成
D. 字符串的正索引的第一个位置为1
2. 下列对队列描述,正确的是( )
A. 队列的特点是先进后出 B. 在队列中,允许插入的一端称为队首,允许删除的一端称为队尾
C. 刚建立的队列,队首指针和队尾指针均为0 D. 出队操作时,先将队首指针加1,然后再将队首元素出队
3. 下列对栈的描述,正确的是( )
A. 栈的特点是后进后出 B. 栈仅允许在表的一端进行插入或删除操作
C. 入栈操作时,将把数据元素压入栈底 D. 出栈操作时,先将栈顶指针加1,然后将栈顶元素取出
4. 18位二代身份证号的编码规则为“六位地址码+八位出生日期+三位数字顺序码和一位数字校验码”,如330425198002160052,下列选项中,能正确从身份证号中获取出生日期信息的是( )
A s[7:14] B. s[7:15] C. s[6:13] D. s[6:14]
5. 为解决计算机主机与打印机之间速度不匹配问题,通常设置一个打印数据缓冲区,主机将要打印的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据打印。该缓冲区的逻辑结构是( )
A. 树 B. 队列 C. 图 D. 堆栈
6. 小王在使用队列解决问题的过程中,初始时,队列为空,队列的首指针和尾指针分别为head、tail,接着小王开始进行了一系列的操作,操作序列为:入队、入队、入队、出队、入队、入队、出队、出队、出队、入队、入队,则操作结束时head和tail的值分别为( )
A. 4 7 B. 4 8 C. 5 7 D. 5 8
7. 向一个栈顶指针为head链式栈中插入一个指针r指向的节点时(节点指针域为next),则应执行的操作是( )
A. head.next=r B. r.next=head;head=r
C. r.next=head.next;head.next=r D. r.next=head;head=head.next
8. 对于入栈顺序为1,2,3,4,5,6,7,8序列,下列选项中不可能是出栈序列的是( )
A. 1,2,3,4,5,6,7,8 B. 8,7,6,5,4,3,2,1 C. 1,2,3,6,5,4,8,7 D. 3,2,1,6,7,8,4,5
9. 元素x1、x2、x3、x4、x5、x6依次入栈,若第1个出栈的元素是x4,则不可能是第3个出栈的元素是( )
A. x1 B. x2 C. x3 D. x5
10. 某诊所叫号系统中,利用队列来储存当前正在排队病人的编号,head指向队首元素,tail指向队尾元素的下一个位置。若当前没有病人,则head与tail的关系是( )
A. head!=tail B. head>tail C. head==tail D. head<tail
11. 若用一个规模为8的数组来实现循环队列,且当前队头指针head和队尾指针tail的值分别为5和7,当从队列中删除一个元素,再加入两个元素后,head和tail的值分别为( )
A. 5和1 B. 6和1 C. 5和9 D. 6和9
12. 下列程序的功能是在一个循环队列中进行入队操作,输入“+n”表示入队操作,入队元素为n,输入“-”表示出队操作,输入“@”时表示操作结束,部分程序如下:
m=int(input(′pleae input m:′)) #输入队列的规模m
que=[′′]*m
head=tail=0
data=input(′please input data:′)
while data!=′@′:
if data[0]=="+":
que[tail]=data[1:]
则程序中划线处应填入的代码为( )
A. head+=1 B. tail+=1 C. tail=(tail+1)%m D. tail=tail%m+1
二、非选择题(本大题共4题,第13题6分,第14题6分,第15题4分,第16题10分,共26分)
13. 回文子串。输入一个字符串,输出所有长度至少为2的回文子串,并统计回文子串的个数。说明:两个不同位置的相同回文子串,统计时算两个。程序运行界面如下图所示:
请输入字符串:121ababa
121
aba
bab
aba
ababa
字符串中共有回文子串