第一章单元测试
1、【题目】
数据在计算机内存中的表示是指()
选项:
A:数据结构
B:数据元素之间的关系
C:数据的存储结构
D:数据的逻辑结构
答案:【数据的存储结构】
2、【题目】
算法指的是()
选项:
A:解决问题的计算方法
B:解决问题的有限运算序列
C:计算机程序
D:排序算法
答案:【解决问题的有限运算序列
】
3、【题目】
在数据结构中,与所使用的计算机无关的数据结构是()
选项:
A:逻辑结构和存储结构
B:物理结构
C:存储结构
D:逻辑结构
答案:【逻辑结构
】
4、【题目】
算法能正确地实现预定功能的特性称为算法的()。
选项:
A:正确性
B:可读性
C:健壮性
D:高效性
答案:【正确性】
5、【题目】已知某算法的执行时间为(n+n2)log2(n+2),n为问题规模,则该算法的时间复杂度是()。
选项:
A:O((n+n2)logn)
B:O(nlogn)
C:O(n2)
D:O(n2logn)
答案:【O(n2logn)】
6、【题目】下面算法将一维数组a中的数据逆序存放到原数组中,空间复杂度为()。
for(i=0;i
B:O(n)
C:O(logn)
D:O(1)
答案:【O(n)】
第二章单元测试
1、【题目】
链表不具备的特点是()。
选项:
A:不必事先估计存储空间
B:所需空间与其长度成正比
C:可随机访问任意一个结点
D:插入和删除不需要移动任何元素
答案:【可随机访问任意一个结点
】
2、【题目】线性表的顺序存储表示优于链式存储表示。
选项:
A:错
B:对
答案:【错】
3、【题目】顺序存储结构的缺点是不便于修改,插入和删除需要移动很多结点。
选项:
A:错
B:对
答案:【对】
4、【题目】在设头、尾指针的单链表中,与长度n有关的操作是()。
选项:
A:删除最后一个结点
B:在p结点之后插入一个结点
C:删除第一个结点
D:在第一个结点之前插入一个结点
答案:【删除最后一个结点】
5、【题目】设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B间插入结点X的操作序列为()。
选项:
A:p->next=s;s->next=q;B:q->next=s;s->next=p;C:p->next=s->next;s->next=p;D:s->next=p->next;p->next=-s;答案:【q->next=s;s->next=p;】
6、【题目】对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()。
选项:
A:用头指针表示的循环单链表
B:用尾指针表示的循环单链表
C:单链表
D:顺序表
答案:【用尾指针表示的循环单链表】
7、【题目】在一个单链表中,若p所指节点不是最后节点,在p之后插入s所指节点,则执行()。
选项:
A:s->link=p->link;p->link=s;B:s->link=p;p->link=s;C:s->link=p->link;p=s;D:p->link=s;s->link=p;答案:【s->link=p->link;p->link=s;】
8、【题目】在双向链表存储结构中,删除p所指的结点时须修改指针()。
选项:
A:p->next=p->next->next;p->next->prior=p;B:p->next->prior=p->prior;p->prior->next=p->next;C:p->prior=p->next->next;p->next=p->prior->prior;D:p->prior->next=p;p->prior=p->prior->prior;答案:【p->next->prior=p->prior;p->prior->next=p->next;】
9、【题目】若事先不知道线性表的长度,则处理线性表时较好的存储结构是()。
选项:
A:B和C
B:顺序表
C:单链表
D:静态链表
答案:【单链表】
10、【题目】向一个有127个元素的顺序表中插入一个新元素并保存,原来顺序不变,平均要移动()个元素。
选项:
A:7
B:8
C:63
D:63.5
答案:【63.5】
11、【题目】某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为()。
选项:
A:147
B:144
C:148
D:145
答案:【144】
12、【题目】在一个以h为头的单循环链表中,p指针指向链尾的条件是()。
选项:
A:p->next==h
B:p->data==-1
C:p->next->next==h
D:p->next==NULL
答案:【p->next==h】
13、【题目】在表头指针为head且表长大于1的单向循环链表中,指针p指向表中的某个结点,若p->next->next=head,则()。
选项:
A:*p的直接后继是尾结点
B:*p的直接后继是头结点
C:p指向尾结点
D:p指向头结点
答案:【*p的直接后继是尾结点】
14、【题目】线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。
选项:
A:必须是连续的
B:连续不连续都可以
C:部分地址必须是连续的
D:一定是不连续的
答案:【连续不连续都可以】
15、【题目】在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是()。
选项:
A:p=p->next;B:p=p->next->next;C:p->next=p;D:p->next=p->next->next;答案:【p->next=p->next->next;】
16、【题目】可以用带表头结点的链表表示线性表,也可以用不带表头结点的链表表示线性表,前者最主要的好处是()。
选项:
A:节省存储空间
B:使空表和非空表的处理统一
C:可以加快对表的遍历
D:可以提高存取元素的速度
答案:【使空表和非空表的处理统一】
17、【题目】与单链表相比,双向链表的优点之一是()。
选项:
A:顺序访问相邻结点更加灵活
B:插入、删除操作更加简单
C:可以省略表头指针或表尾指针
D:可以随机访问
答案:【顺序访问相邻结点更加灵活】
18、【题目】如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式()。
选项:
A:单循环链表
B:双向链表
C:单链表
D:顺序表
答案:【顺序表】
19、【题目】线性链表不具有的特点是()。
选项:
A:插入与删除时不必移动元素
B:所需空间与线性表长度成正比
C:不必事先估计所需存储空间大小
D:随机访问
答案:【随机访问】
20、【题目】对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。插入一个元素时平均要移动表中的()个元素。
选项:
A:n/2
B:(n+1)/2
C:n
D:(n-1)/2
答案:【n/2】
21、【题目】链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
选项:
A:对
B:错
答案:【对】
22、【题目】在一个带头结点的双向循环链表中,若要在p所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。
选项:
A:2
B:3
C:4
D:5
答案:【4】
23、【题目】具有线性关系的集合中,若a,b是集合中的任意两个元素,则必有a选项:
A:错
B:对
答案:【错】
第三章单元测试
1、【题目】
设abcdef以所给次序进栈,若在进栈操作时允许退栈,则下列得不到的序列为()
选项:
A:dcefba
B:bcafed
C:fedcba
D:cabdef
答案:【cabdef】
2、【题目】
若已知一个栈的进栈序列是1,2,3……n,其输出序列是p1,p2,p3,pn,若p1=3,
则p2为()
选项:
A:可能是2
B:可能是1
C:一定是1
D:一定是2
答案:【可能是2
】
3、【题目】
假定循环队列的队首和队尾指针分别为front和rear,则判断队满的条件为()。
选项:
A:front==rear
B:front==0
C:front+1==rear
D:(rear+1)modMAXSIZE==front
答案:【(rear+1)modMAXSIZE==front】
4、【题目】队列和栈都是运算受限的线性表,只允许在表的两端进行运算。
选项:
A:对
B:错
答案:【对】
5、【题目】
循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。
选项:
A:rear-front-1
B:rear-front
C:(rear-front+m)%m
D:rear-front+1
答案:【(rear-front+m)%m】
6、【题目】不论栈是用数组实现,还是用链表实现,入栈和出栈的时间复杂度均为O(n)。
选项:
A:对
B:错
答案:【错】
7、【题目】
若栈采用顺序存储方式存储,两栈共享空间A[1..m],top[i]代表第i个栈(i=1,2)的栈顶,栈1的底在A[1],栈2的底在A[m],则栈满的条件是()。
选项:
A:|top[2]-top[1]|=0
B:top[1]+top[2]=m
C:top[1]=top[2]
D:top[1]+1=top[2]
答案:【top[1]+1=top[2]
】
8、【题目】
输入序列为ABC,若出栈的顺序为CBA时,经过的栈操作为()。
选项:
A:push,pop,push,pop,push,pop
B:push,push,push,pop,pop,pop
C:push,push,pop,pop,push,pop
D:push,pop,push,push,pop,pop
答案:【push,push,push,pop,pop,pop】
9、【题目】
栈和队都是()。
选项:
A:限制存取点的非线性结构
B:限制存取点的线性结构
C:链式存储的非线性结构
D:顺序存储的线性结构
答案:【限制存取点的线性结构】
10、【题目】
链栈与顺序栈相比,有一个比较明显的优点是()。
选项:
A:删除操作更方便
B:插入操作更方便
C:会出现栈空的情况
D:通常不会出现栈满的情况
答案:【通常不会出现栈满的情况】
11、【题目】
设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
选项:
A:线性表的链式存储结构
B:队列
C:线性表的顺序存储结构
D:栈
答案:【栈】
12、【题目】某队列允许在其两端进行入队操作,但只允许在一端进行出队操作,若有元素a,b,c,d,e依次入队后再进行出队操作,则不可能得到的出队序列是()。
选项:
A:d,b,c,a,e
B:d,b,a,c,e
C:e,c,b,a,d
D:b,a,c,d,e
答案:【d,b,c,a,e】
13、【题目】有如下递归算法:
intfact(intn){//n大于等于0if(n选项:
A:n-1
B:n+2
C:n
D:n+1
答案:【n+1】
14、【题目】栈在()中有所应用。
选项:
A:表达式求值
B:前三个选项都有
C:递归调用
D:函数调用
答案:【前三个选项都有】
15、【题目】
设有一个递归算法如下
intfact(intn){//n大于等于0
if(n选项:
A:n
B:n+2
C:n+1
D:n-1
答案:【n+1】
16、【题目】
()的一个重要应用是在程序设计语言中实现递归。
选项:
A:顺序表
B:栈
C:队列
D:数组