数据结构期末复习单选Word文件下载.docx
《数据结构期末复习单选Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习单选Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
![数据结构期末复习单选Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/22/43aea491-9c0d-4a2b-9046-40bdf71276b4/43aea491-9c0d-4a2b-9046-40bdf71276b41.gif)
A.数据类型B.操作C.数据抽象D.类型说明
7.当一个作为实际传递的对象占用的存储空间较大并可能被修改时,应最好说明为(),以节省参数值的传输时间和存储参数的空间。
A.基本类型B.引用型C.指针型D.常值引用型
8.当需要进行标准I/O操作时,则应在程序文件中包含iostream.h头文件,当需要进行文件I/O操作时,则应在程序文件中包含()头文件。
A.fstream.hB.stdlib.hC.iomanip.hD.string.h
9.一个记录r理论上占有的存储空间的大小等于所有域类型长度之和,实际上占有的存储空间的大小即记录长度为()。
A.所有域长度之和B.最大域所占字节长度
C.任意一个域长度D.sizeof(r)的值
10.输出一个二维数组b[m][n]中所有元素值的时间复杂度为()。
A.O(n)B.O(m+n)C.O(n2)D.O(m*n)
11.一个算法的时间复杂度为(3n2+2nlog2n+4n-7)/(5n),其数量级形式的复杂度表示为()。
A.O(n)B.O(nlog2n)C.O(n2)D.O(log2n)
12.某算法的时间代价为T(n)=100n+10nlog2n+n2+10,其时间复杂度为()。
A.O(n)B.O(nlog2n)C.O(n2)D.O
(1)
13.某算法仅含程序段1和程序段2,程序段1的执行次数3n2,程序段2的执行次数为0.01n3,则该算法的时间复杂度为()。
A.O(n)B.O(n2)C.O(n3)D.O
(1)
14.以下说法错误的是()。
A.抽象数据类型具有封装性。
B.抽象数据类型具有信息隐蔽性。
C.使用抽象数据类型的用户可以自己定义对抽象数据类型中数据的各种操作。
D.抽象数据类型的一个特点是使用与实现分离。
15.在二维数组中,每个数组元素同时处于()个向量中。
A.0个B.1个C.2个D.n个
16.多维数组实际上是由嵌套的()实现的。
A.一维数组B.多项式C.三元组表D.简单变量
17.在一个长度为n的顺序表中顺序搜索一个值为x的元素时,在等概率的情况下,搜索成功时的数据平均比较次数为()。
A.nB.n/2C.(n+1)/2D.(n-1)/2
18.在一个长度为n的顺序表中向第i个元素(0≤i≤n-1)位置插入一个新元素时,需要从后向前依次后移()个元素。
A.n-iB.n-i+1C.n-i-1D.i
19.在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需要从前向后依次前移()个元素。
A.n-iB.n-i+1C.n-i-1D.i
20.在一个长度为n的顺序表中删除一个值为x的元素时,需要比较元素和移动元素的总次数为()。
A.(n+1)/2B.n/2C.nD.n+1
21.在一个长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为()。
A.O(n)B.O
(1)C.O(n2)D.O(log2n)
22.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。
A.O(n)B.O(n/2)C.O
(1)D.O(n2)
23.在一个长度为n的有序顺序表中搜索值为x元素的时间效率最高的算法的渐进时间复杂度为()。
A.O
(1)B.O(
)C.O(log2n)D.O(n)
24.在二维数组A[8][10]中,每一个数组元素A[i][j]占用3个存储空间,所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储空间是()。
A.80B.100C.240D.270
25.设有一个n⨯n的对称矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B中()处。
A.(i+3)*i/2B.(i+1)*i/2
C.(2n-i+1)*i/2D.(2n-i-1)*i/2
26.设有一个n⨯n的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么第i行的对角元素A[i][i]存放于B中()处。
A.(i+3)*i/2B.(i+1)*i/2C.(2n-i+1)*i/2D.(2n-i-1)*i/2
27.设有两个串t和p,求p在t中首次出现的位置的运算叫做()。
A.求子串B.模式匹配C.串替换D.串连接
28.不带头结点的单链表first为空的判定条件是()。
A.first==NULL;
B.first->
link==NULL;
C.first->
link==first;
D.first!
=NULL;
29.带头结点的单链表first为空的判定条件是()。
A.first==NULL;
link==NULL;
link==first;
D.first!
=NULL;
30.设单链表中结点的结构为(data,link)。
已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行的操作是()。
A.s->
link=p->
link;
p->
link=s;
B.q->
s->
link=p;
C.p->
link=s->
D.p->
link=q;
31.设单链表中结点的结构为(data,link)。
已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是()。
A.s->
B.p->
C.s->
p=s;
D.s->
32.设单链表中结点的结构为(data,link)。
若想摘除p->
link所指向的结点,则应执行的操作是()。
A.p->
link->
B.p=p->
D.p=p->
33.非空的尾结点(由p所指向)满足的条件是()。
A.p->
lin循环单链表first的k==NULL;
B.p==NULL;
D.p==first;
34.设单循环链表中结点的结构为(data,link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。
若想删除链表第一个结点,则应执行的操作是()。
A.s=rear;
rear=rear->
deletes;
B.rear=rear->
deleterear;
C.rear=rear->
D.s=rear->
rear->
link=s->
35.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需要平均比较的结点数是()。
A.nB.n/2
C.(n-1)/2D.(n+1)/2
36.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。
A.O
(1)B.O(n)C.O(n2)D.O(nlog2n)
37.给定有n个元素的向量,建立一个有序单链表的时间复杂度是()。
A.O
(1)B.O(n)
C.O(n2)D.O(nlog2n)
38.单链表A长度为m,单链表B长度为n,若将B联接在A的末尾,其时间复杂度应为()。
A.O
(1)B.O(m)
C.O(n)D.O(m+n)
39.利用双向链表作线性表的存储结构的优点是()。
A.便于单向进行插入和删除的操作B.便于双向进行插入和删除的操作
C.节省空间D.便于销毁结构释放空间
40.带表头的双向循环链表的空表满足()。
A.first=NULL;
B.first->
rLink==first
C.first->
lLink==NULLD.first->
rLink==NULL
41.已知L是一个不带表头的单链表,在表首插入结点*p的操作是()。
A.p=L;
link=L;
B.p->
p=L;
C.p->
L=p;
D.L=p;
p->
42.已知L是带表头的单链表,删除首元结点的语句是()。
A.L=L->
B.L->
link=L->
C.L=L;
D.L->
43.栈的插入和删除操作在()进行。
A.栈顶B.栈底C.任意位置D.指定位置
44.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。
A.top++;
B.top--;
C.top=0;
D.top;
45.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。
A.3,2,1B.2,1,3C.3,1,2D.1,3,2
46.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。
A.前一个B.后一个C.当前D.后面
47.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。
A.n-2B.n-1C.nD.n+1
48.从一个顺序存储的循环队列中删除一个元素时,首先需要()。
A.队头指针加一B.队头指针减一
C.取出队头指针所指的元素D.取出队尾指针所指的元素
49.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A.front+1==rearB.rear+1==front
C.front==0D.front==rear
50.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。
A.front==rearB.front!
=NULL
C.rear!
=NULLD.front==NULL
51.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。
若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行()操作。
A.top->
B.s->
link=top->
top->
C.s->
link=top;
top=s;
top=top->
52.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。
若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行()操作。
A.x=top->
data;
B.top=top->
x=top->
C.x=top;
D.x=top->
53.设循环队列的结构是
typedefstruct{
DataTypedata[MaxSize];
intfront,rear;
}Queue;
若有一个Queue类型的队列Q,试问判断队列满的条件应为()。
A.Q.front==Q.rear;
B.Q.front-Q.rear==MaxSize;
C.Q.front+Q.rear==MaxSize;
D.Q.front==(Q.rear+1)%MaxSize;
54.设循环队列的结构是
constintMaxSize=100;
typedefintDataType;
若有一个Queue类型的队列Q,则应用()表达式计算队列元素的个数。
A.(Q.rear-Q.front+MaxSize)%MaxSize;
B.Q.rear-Q.front+1;
C.Q.rear-Q.front-1;
D.Q.rear-Qfront;
55.为增加内存空间的利用率和减少溢出的可能性,由两个栈共享一块连续的内存空间时,应将两栈的()分别设在这块内存空间的两端。
A.长度B.深度C.栈顶D.栈底
56.递归是将一个较复杂的(规模较大的)问题转化为一个稍为简单的(规模较小的)与原问题()的问题来解决,使之比原问题更靠近可直接求解的条件。
A.相关B.子类型相关C.同类型D.不相关
57.递归调用时系统需要利用一个()来实现数据的传递和控制的转移。
A.队列B.优先级队列C.双端队列D.栈
58.在系统实现递归调用时需利用递归工作记录保存(),当递归调用程序执行结束时通过它将控制转到上层调用程序。
A.调用地址B.递归入口C.返回地址D.递归出口
59.在递归执行过程中,当前执行的递归函数过程的递归工作记录一定是递归工作栈中的栈顶记录,称之为()记录。
A.活动B.当前C.日志D.标记
60.将递归求解过程改变为非递归求解过程的目的是()。
A.提高速度B.改善可读性C.增强健壮性D.提高可维护性
61.如果一个递归函数过程中只有一个递归语句,而且它是过程体的最后语句,则这种递归属于(),它很容易被改写为非递归过程。
A.单向递归B.回溯递归C.间接递归D.尾递归
62.设有一个递归算法如下
intfact(intn){//n大于等于0
if(n<
=0)return1;
elsereturnn*fact(n-1);
则计算fact(n)需要函数调用的次数为()次。
A.nB.n+1C.n+2D.n-1
63.设有一个递归算法如下
intX(intn){
=3)return1;
elsereturnX(n-2)+X(n-4)+1;
试问计算X(X(5))时需要调用()次X函数。
A.2次B.3次C.4次D.5次
64.设有一个广义表A(a),其表尾为()。
A.aB.(())C.()D.(a)
65.设有一个广义表A((x,(a,b)),(x,(a,b),y)),运算Head(Head(Tail(A)))的执行结果为()。
A.xB.(a,b)C.(x,(a,b))D.y
66.下列广义表中的线性表是()。
A.E(a,(b,c))B.E(a,E)C.E(a,b)D.E(a,L())
67.对于一组广义表A(),B(a,b),C(c,(e,f,g)),D(B,A,C),E(B,D),其中的E是()。
A.线性表B.纯表C.递归表D.再入表
68.已知广义表A((a,b,c),(d,e,f)),从A中取出原子e的运算是()。
A.Tail(Head(A))B.Head(Tail(A))
C.Head(Tail(Head(Tail(A))))D.Head(Head(Tail(Tail(A))))
69.树中所有结点的度之和等于所有结点数加()。
A.0B.1C.–1D.2
70.在一棵树中,()没有前驱结点。
A.树枝结点B.叶子结点C.树根结点D.空结点
71.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。
A.2B.1C.0D.–1
72.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。
A.nB.n-1C.n+1D.2*n
73.在一棵具有n个结点的二叉树的第i层上(假定根结点为第0层,i大于等于0而小于等于树的高度),最多具有()个结点。
A.2iB.2i+1C.2i-1D.2n
74.在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于()。
A.2h-1B.2h+1C.2h-1D.2h
75.一棵具有35个结点的完全二叉树的高度为()。
假定空树的高度为-1。
A.5B.6C.7D.8
76.在一棵具有n个结点的完全二叉树中,树枝结点的最大编号为()。
假定树根结点的编号为0。
A.⎣(n-1)/2⎦B.⎣n/2⎦C.⎡n/2⎤D.⎣n/2⎦-1
77.在一棵完全二叉树中,若编号为i的结点存在左子女,则左子女结点的编号为()。
A2iB2i-1C2i+1D2i+2
78.在一棵完全二叉树中,假定树根结点的编号为0,对于编号为i(i>
0)的结点,其双亲结点的编号为()。
A.⎣(i+1)/2⎦B.⎣(i-1)/2⎦C.⎣i/2⎦D.⎣i/2⎦-1
79.在一棵树的左子女-右兄弟表示法中,一个结点的右子女是该结点的()结点。
A.兄弟B.父子C.祖先D.子孙
80.在一棵树的静态双亲表示中,每个存储结点包含()个域。
A1B2C3D4
81.已知一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为()。
假定树根结点的高度为0。
A.3B.4C.5D.6
82.已知一棵树的边集表示为{<
A,B>
<
A,C>
B,D>
C,E>
C,F>
C,G>
F,H>
F,I>
},则该树的深度为()。
A.2B.3C.4D.5
83.利用n个值作为叶结点的权生成的霍夫曼树中共包含有()个结点。
A.nB.n+1C.2*nD.2*n-1
84.利用3,6,8,12这四个值作为叶子结点的权,生成一棵霍夫曼树,该树的带权路径长度为()。
A55B29C58D38
85.一棵树的广义表表示为a(b,c(e,f(g)),d),当用左子女-右兄弟链表表示时,右指针域非空的结点个数为()。
A1B2C3D4
86.向具有n个结点的堆中插入一个新元素的时间复杂度为()。
A.O
(1)B.O(n)C.O(log2n)D.O(nlog2n)
87.若搜索每个元素的概率相等,则在长度为n的顺序表上搜索任一元素的平均搜索长度为()。
A.nB.n+1C.(n-1)/2D.(n+1)/2
88.对长度为10的顺序表进行搜索,若搜索前面5个元素的概率相同,均为1/8,搜索后面5个元素的概率相同,均为3/40,则搜索任一元素的平均搜索长度为()。
A.5.5B.5C.39/8D.19/4
89.对长度为3的顺序表进行搜索,若搜索第一个元素的概率为1/2,搜索第二个元素的概率为1/3,搜索第三个元素的概率为1/6,则搜索任一元素的平均搜索长度为()。
A.5/3B.2C.7/3D.4/3
90.对长度为n的单链有序表,若搜索每个元素的概率相等,则搜索任一元素的搜索成功的平均搜索长度为()。
A.n/2B.(n+1)/2C.(n-1)/2D.n/4
91.对于长度为n的顺序存储的有序表,若采用折半搜索,则对所有元素的搜索长度中最大的为()的值向上取整。
A.log2(n+1)B.log2nC.n/2D.(n+1)/2
92.对于长度为n的顺序存储的有序表,若采用折半搜索,则对所有元素的搜索长度中最大的为()的值的向下取整加1。
93.对于长度为9的顺序存储的有序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()除以9。
A.20B.18C.25D.22
94.对于长度为18的顺序存储的有序表,若采用折半搜索,则搜索第15个元素的搜索长度为()。
A.3B.4C.5