数据结构试题及答案.docx
《数据结构试题及答案.docx》由会员分享,可在线阅读,更多相关《数据结构试题及答案.docx(32页珍藏版)》请在冰豆网上搜索。
数据结构试题及答案
数据结构试题及答案
一、单项选择题
绪论
1.计算机中的算法一般具有输入、输出和(C)五个基本性质。
A.确定性、有穷性、稳定性B.易读性、确定性、可行性
C.有穷性、确定性、可行性D.可行性、可移植性、可扩展性
2.数据的最小单位是(B)。
(A)数据元素(B)数据项(C)数据类型(D)数据变量
3.以下数据结构中(D)属非线性结构。
A.栈B.串C.队列D.平衡二叉树
4.以下不属于存储结构是(B)。
A.栈B.线索树C.哈希表D.双链表
5.算法的时间复杂度取决于(C)。
A.问题的规模B.待处理数据的初始状态
C.A和BD.计算机的配置
6.在(D)中将会用到栈结构。
A.递归调用B.函数调用C.表达式求值D.以上场景都有
7.某算法的空间复杂度为O
(1),则(B)。
A.该算法执行不需要任何辅助空间
B.该算法执行所需辅助空间大小与问题规模n无关
C.该算法执行不需要任何空间
D.该算法执行所需全部空间大小与问题规模n无关
8.顺序表和链表相比存储密度较大,这是因为(B)。
A.顺序表的存储空间是预先分配的
B.顺序表不需要增加指针来表示元素之间的逻辑关系
C.链表中所有节点的地址是连续的
D.顺序表中所有元素的存储地址是不连续的
9.设n是描述问题规模的非负整数,下面程序片段的时间复杂度为(A)。
x=1;
while(x<=n)
x=5*x;
A.O(log5n)B.O(n)C.O(nlog5n)D.O(n5)
10.数据结构是指(D)。
A.一种数据类型C.相互之间存在一种或多种特定关系的数据元素的集合
B.数据的存储结构D.一组性质相同的数据元素的集合
11.以下算法的时间复杂度为(A)。
voidfun(intn)
{inti=1;
while(i<=n)
i++;
}
A.O(n)B.O(
)
C.O(nlog2n)D.O(log2n)
12.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储(C)。
A.数据的处理方法B.数据元素的类型
C.数据元素之间的关系D.数据的存储方法
13.以下数据结构中元素之间为非线性关系的是(D)。
A.栈B.队列C.线性表D.以上都不是
线性表
14.设线性表有n个元素,以下操作中,A在顺序表上实现比在链表上实现效率更高。
A.输出第i(1≤i≤n)个元素值
B.交换第1个元素与第2个元素的值
C.顺序输出这n个元素的值
D.输出与给定值x相等的元素在线性表中的序号
15.下面关于线性表的叙述,错误的是(D)。
A.线性表的顺序存储方式需要占用一块连续的存储空间
B.线性表的链式存储方式不必占用一块连续的存储空间
C.线性表采用链式存储便于插入和删除操作的实现
D.线性表采用顺序存储便于插入和删除操作的实现
16.在含有n个节点的单链表中查找第i个节点的平均时间复杂度是(D)。
A.O(log2n)B.O
(1)C.O(n2)D.O(n)
17.设线性表中有n个元素,以下运算中,(A)在单链表上实现要比在顺序表上实现效率更高。
A.删除指定位置元素的后一个元素
B.在最后一个元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第n-i+1个元素的值(i=1,2,…,n)
18.在一个带头结点的循环单链表L中,删除元素值为x的结点,算法的时间复杂度为(A)。
A.O(n)B.O(
)
C.O(nlog2n)D.O(n2)
19.双向链表中有两个指针域,prior和next,分别指向前驱和后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为( D )
A.p->prior=q;q->next=p;p->prior->next=q; q->prior=p->prior;
B.q->prior=p->prior;p->prior->next=q;q->next=p;p->prior=q->next;
C.q->next=p; p->next=q; p->prior->next=q; q->next=p;
D. p->prior->next=q; q->next=p; q->prior=p->prior; p->prior=q;
20.在一个双链表中,删除p所指节点(非首、尾节点)的操作是(A)。
A.p->prior->next=p->next;p->next->prior=p->prior;
B.p->prior=p->prior->prior;p->prior->prior=p;
C.p->next->prior=p;p->next=p->next->next;
D.p->next=p->prior->prior;p->prior=p->prior->prior;
21.在长度为n的顺序表中插入一个元素,对应算法的时间复杂度为(C)。
A.O
(1)B.O(log2n)C.O(n)D.O(n2)
栈和队列
22.设n个元素进栈序列是1、2、3、…、n,其输出序列是若p1=3,则p2的值为C。
A.一定是2B.一定是1C.不可能是1D.以上都不对
23.设n个元素进栈序列是p1,p2,p3,…,pn,其输出序列是p1、p2、…、pn,若p3=3,则p1的值A。
A.可能是2B.一定是2
C.不可能是1D.一定是1
24.设栈的输入序列是1、2、3、4,则(D)不可能是其出栈序列。
A.1,2,4,3B.2,1,3,4C.1,4,3,2D.4,3,1,2
25.在数据处理过程中常需要保存一些中间数据,如果要实现后保存的数据先处理,则应采用(B)来保存这些数据。
A.线性表B.栈C.队列D.单链表
26.在数据处理过程中常需要保存一些中间数据,如果先保存的数据先处理,则使用(B)来保存这些数据。
A.线性表B.队列C.栈D.单链表
27.在环形队列中,元素的排列顺序(C)。
A.与队头和队尾指针的取值有关B.与元素值的大小有关
28.C.由元素进队的先后顺序确定D.与存放队中元素的数组大小有关设循环队列的最大容量是N,front是头指针,rear是尾指针,则队空的判定条件为(C)。
A.(rear+1)%N==frontB.rear+1==front
C.rear==frontD.rear=0,且front=0
29.若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变指针(B)。
A.frontB.rearC.front和rearD.以上都不队
30.判定一个循环队列Q(最多元素为m)为满队列的条件是(C)。
(A)Q->front==Q->rear(B)Q->front!
=Q->rear
(C)Q->front==(Q->rear+1)%m(D)Q->front!
=(Q->rear+1)%m
31.栈和队列的共同特点是(A)。
(A)只允许在端点处插入和删除元素(B)都是先进后出
(C)都是先进先出(D)没有共同点
32.设环形队列中数组的下标为0~N-1,其队头、队尾指针分别为front和rear(front指向队列中队头元素的前一个位置,rear指向队尾元素的位置),则其元素个数为(D)。
A.rear-frontB.rear-front-1
C.(rear-front)%N+1D.(rear-front+N)%N
33.若用一个大小为6的数组来实现环形队列,队头指针front指向队列中队头元素的前一个位置,队尾指针rear指向队尾元素的位置。
若当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为(B)。
A.1和5B.2和4
C.4和2D.5和1
34.中缀表达式a*(b+c)-d的对应的后缀表达式是(B)。
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
35.设输入序列为a,b,c,d,借助一个栈规定a最先输出,则不可能的输出序列为(C)
Aa,b,d,cBa,d,c,b
Ca,d,b,cDa,c,d,b
串数组和广义表
36.在KMP算法中,串“ababaabab”的next数组值为(A)。
A.-1,0,0,1,2,3,1,2,3B.-1,0,0,1,2,1,1,2,3
C.-1,0,0,1,2,3,4,1,2D.-1,0,0,1,2,3,1,2,2
37.设二维数组A[3][5],每个数组元素占用2个存储单元,若按列优先顺序进行存储,A[0][0]的存储地址为100,则A[2][3]的存储地址是(A)。
A.122B.126
C.114D.116
38.设数组A[0..5,0..6]的每个元素占5个存储单元。
则将其按行优先存储在起始地址为1000的连续内存单元中,则元素A[5][5]的存储地址为(A)。
A.1200B.1180C.1205D.1175
39.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为(D)。
A.100B.40C.80D.
40.若一个栈采用数组s[0..n-1]存放其元素,初始时栈顶指针为n,则以下元素x进栈的正确操作是(C)。
A.top++;s[top]=x;B.s[top]=x;top++;
C.top--;s[top]=x;B.s[top]=x;top--;
41.一个n×n的对称矩阵A,如果采用以列优先(即以列序为主序)的压缩方式存放到一个一维数组B中,则B的容量为C。
A.n2B.
C.
D.
树结构
42.在下列存储形式中,_D__不是m叉树(m>2)的存储形式?
A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法
43.若一棵3次树中有a个度为1的节点,b个度为2的节点,c个度为3的节点,则该树中有(D)个叶子节点。
A.1+2b+3cB.a+2b+3cC.2b+3cD.1+b+2c
44.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中的叶子结点个数是(D)。
A.5B.6C.7D.8
45.一棵二叉树的后序遍历序列为DABEC,中序遍历序列为DEBAC,则先序遍历序列为D。
A.ACBEDB.DECAB
C.DEABCD.CEDBA
46.一棵深度为h(h≥1)的完全二叉树至少有(A)个结点。
A.2h-1B.2h
C.2h+1D.2h-1+1
47.设森林F中有4棵树,第1、2、3、4棵树的结点个数分别为a、b、c、d,将森林F转换为一颗二叉树B,则二叉树B根结点的左子树上的结点个数是(A)。
A.a-1B.aC.a+b+cD.b+c+d
48.由权值分别为9、2、7、5的四个叶子节点构造一棵哈夫曼树,该树的带权路径长度为(B)。
A.23B.44C.37D.27
49.一棵含有n个结点的线索二叉树中,其线索个数为(C)。
A.2nB.n-1
C.n+1D.n
50.设给定权值总数有n个,其哈夫曼树的结点总数为(D)
A不确定B2nC2n+1D2n-1
第1次必定是2个叶子组成二叉树,产生1新结点,接下来有2种情况:
1.此新结点与原剩下的叶子再组成二叉树又产生1新结点,这样就只有第1次时由2个叶子产生1新结点,以后每次由1叶子与新结点产生新结点,故n个叶子共有2n-1个结点.
2.剩下的叶子中又有2个叶子(比第1次产生的新结点权小)结合产生新结点,其它类似,那么必然会由2个都是新结点再产生新结点,所以实际上数量与第1种一样,共有2n-1个.
图结构
51.无向图的邻接矩阵是一个(C)。
A.上三角矩阵B.对角矩阵C.对称矩阵D.零矩阵
52.如图所示有向图的一个拓扑序列是(B)。
(A)ABCDEF(B)FCBEAD
(C)FEDCBA)(D)DAEBCF
53.一个含有n个顶点的无向连通图采用邻接矩阵存储,则该矩阵一定是(A)。
A.对称矩阵B.非对称矩阵
C.稀疏矩阵D.稠密矩阵
54.设无向连通图有n个顶点e条边,若满足(A),则图中一定有回路。
A.e≥nB.eC.e=n-1D.2e≥n
55.对于AOE网的关键路径,以下叙述(D)是正确的。
A.任何一个关键活动提前完成,则整个工程一定会提前完成
B.完成整个工程的最短时间是从源点到汇点的最短路径长度
C.一个AOE网的关键路径一定是唯一的
D.任何一个活动持续时间的改变可能会影响关键路径的改变
56.设完全无向图中有n个顶点,则该完全无向图中有(A)条边。
(A)n(n-1)/2(B)n(n-1)(C)n(n+1)/2(D)(n-1)/2
57.下列关于图的叙述中,正确的是(C)。
Ⅰ.回路是简单路径
Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间
Ⅲ.若有向图中存在拓扑序列,则该图不存在回路
A.仅ⅡB.仅Ⅰ、ⅡC.仅ⅢD.仅Ⅰ、Ⅲ
58.对图1所示的无向图,从顶点1开始进行深度优先遍历;可得到顶点访问序列A。
A.1243576B.1243567
C.1245637D.1234576
图1一个无向图
59.对于无向图的邻接矩阵来说,(C)。
A.第i行上、第i列上非零元素总数等于顶点i的度数
B.矩阵中的非零元素个数等于图中的边数
C.第i行上的非零元素个数和第i列的非零元素个数一定相等
D.邻接矩阵中非全零行的行数等于图中的顶点数
60.已知图G的邻接表如图1所示,则从顶点V0出发进行深度优先遍历的结果是___A__。
图图G的邻接表
A.0,1,2,3,4B.0,1,2,4,3
C.0,1,3,4,2D.0,1,4,2,3
61.以下关于有向图的说法中,正确的是(B)。
A.强连通图是任何顶点到其他所有顶点都有边
B.完全有向图一定是强连通图
C.有向图中任一顶点的入度等于出度
D.有向图边集的子集和顶点集的子集可构成原有向图的子图
A.顶点2B.顶点3C.顶点4D.顶点7
62.一个表示工程的AOE网中的关键路径(B)。
A.必须是唯一的B.可以有多条C.可以没有D.以上都不对
查找
63.适用于折半查找的表的存储方式及元素排列要求为( C )
A.链接方式存储,元素无序 B.链接方式存储,元素有序
C. 顺序方式存储,元素有序 D.顺序方式存储,元素无序
64.顺序查找,在等概率情况下,其平均查找长度为()
AnB2nCn+1D(n+1)/2
65.关于m阶B-树说法错误的是(B)。
A.m阶B-树是一棵平衡的m叉树
B.B-树中的查找无论是否成功都必须找到最下层结点
C.根结点最多含有m棵子树
D.根结点至少含有2棵子树
66.哈希表中出现冲突是指D。
A.两个元素具有相同的序号
B.两个元素的关键字不同,而其他属性相同
C.数据元素过多
D.两个元素的关键字不同,而对应的哈希函数值(存储地址)相同
67.对有n个记录的表进行直接插入排序,在最好情况下需比较A次关键字。
A.n-1B.n+1C.n/2D.n(n-1)/2
68.哈希查找方法一般适用于(D)情况下的查找。
A.查找表为链表
B.查找表为有序表
C.关键字集合比地址集合大得多
D.关键字集合与地址集合之间存在着某种对应关系。
69.以下关于哈希查找的叙述中正确的是(D)。
A.哈希查找中不需要任何关键字的比较
B.采用拉链法解决冲突时,查找每个元素的时间是相同的
C.哈希表在查找成功时的平均查找长度仅仅与表长有关
D.哈希表的装填因子等于表中填入的记录数除以哈希表的长度
排序
70.设有5000个待排序的记录,如果需要用最快的方法选出其中关键字最小的10个记录,则选用下列(B)方法比较合适。
A.快速排序B.堆排序C.归并排序D.插入排序若
71.设有一组初始记录关键字序列为(34,76,45,18,26,54,92),则由这组记录关键字生成的二叉排序树的深度为(C)。
(A)6(B)5(C)4(D)7
72.设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序后的结果为(C)。
A.2,3,5,8,6B.3,2,5,8,6
C.3,2,5,6,8D.2,3,6,5,8
73.时间复杂度恒为O(nlog2n)且不受数据初始状态影响的排序算法是(A)。
A.归并排序B.希尔排序C.快速排序D.简单选择排序
74.堆的形状是一棵__D_____。
A.满二叉树B.二叉判定树C.平衡二叉树D.完全二叉树
75.下列排序算法中,其中(D)是稳定的。
A堆排序,冒泡排序B快速排序,堆排序
C直接选择排序,归并排序D归并排序,冒泡排序
76.在下列排序方法中,(D)是不稳定的排序方法。
A.直接插入排序B.归并排序C.冒泡排序D.直接选择排序
77.以下序列是堆的是(C)。
A.{75,65,30,15,25,45,20,10}B.{75,65,45,10,30,25,20,15}
C.{75,45,65,30,15,25,20,10}D.{75,45,65,10,25,30,20,15}
78.用某种排序方法对数据序列{24,88,21,48,15,27,69,35,20}进行递增排序,元素序列的变化情况如下:
(1){24,88,21,48,15,27,69,35,20}
(2){20,15,21,24,48,27,69,35,88}
(3){15,20,21,24,35,27,48,69,88}
(4){15,20,21,24,27,35,48,69,88}
则所采用的排序方法是(A)。
A.快速排序B.简单选择排序
C.直接插入排序D.归并排序
79.如要在1000个整数中找出前10个最小的整数,在以下排序方法中最好采用(B)。
A.直接插入排序B.冒泡排序C.二路归并排序D.希尔排序
80.对含有n个元素的顺序表采用直接插入排序方法进行排序,在最好情况下算法的时间复杂度为(A)。
A.O(n)B.O(nlog2n)
C.O(n2)D.O(
)
81.下列四棵二叉树中,()是一个堆。
82.以下排序方法中,(C)不需要进行关键字的比较。
A.快速排序B.归并排序C.基数排序D.堆排序
83.在含有27个节点的二叉排序树上,查找关键字为35的节点,则依次比较的关键字有可能是(D)。
A.28,36,18,46,35B.18,36,28,46,35C.46,28,18,36,35D.46,36,18,26,35
84.对一组数据(84,47,25,15,21)排序,数据在排序过程中的变化如下:
(1)84,47,25,15,21
(2)21,47,25,15,84
(3)15,21,25,47,84
(4)15,21,25,47,84
则所采用的排序方法是C。
A.冒泡排序B.快速排序C.堆排序D.直接插入排序
二、填空题(每空2分,共20分)
绪论
1.数据结构研究的内容包括数据的逻辑结构,数据的_存储结构_以及对数据的运算。
线性表
2.已知一有向图的邻接表存储结构如下:
从顶点1出发,DFS遍历的输出序列是_(1,3,4,5,2)_,BFS遍历的输出序列是(1,3,2,4,5)
或
3.在长度为n(n≥1)的循环双链表L中,在尾节点之后插入一个新节点的时间复杂度为(O
(1))。
4.在单链表L中,指针P所指结点有后继结点的条件是__p->next!
=NULL。
栈和队列
5.设循环队列中数组的下标是0~N-1,其队头队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为(r-f+N)%N。
6.设栈s和队列q的初始状态都为空,元素a、b、c、d、e和f依次通过栈s,一个元素出栈后即进入队列q,若6个元素出队的序列是b、d、c、f、e、a,则栈s的容量至少应该存3个元素?
串和数组
7.在KMP算法中,设模式串p=abcabaa,那么p的nextval数组为([-1,0,0,-1,0,2,1])。
8.若将n阶上三角矩阵A按列优先顺序压缩存放在一维数组B[1..n(n+1)/2]中,A中第一个非零元素a1,1存于B数组的b1中,则应存放到bk中的非零元素ai,j(1≤i≤n,1≤j≤i)的下标i、j与k的对应关系是
。
9.设二维数组A[3][5],每个数组元素占用2个存储单元,若按列优先顺序进行存储,A[0][0]的存储地址为100,则A[2][3]的存储地址是。
10.两个串是相等的,当且仅当两个串的长度相等且各对应位置上的___的字符都相同。
11.对矩阵进行压缩是为了__节省存储空间_________。
树结构
12.设某棵二叉树中度数为0的结点有m个,度数为1的结点数为n,则这棵二叉中共有(2m+n-1)个结点。
13.设某棵二叉树中有2000个结点,则该二叉树的最小高度为__11__。
14.一棵二叉树的先序遍历序列为ABCDEF,中序遍历序列为CBAEDF,则后序遍历序列为CBEFDA。
15.设森林F对应的二叉树为B,B中有m个节点,其根节点的右子树的节点个数为n,森林F中第一棵树的节点个数是m-n。
16.高度为7的完全二叉树至少有__32__个叶子结点。
图结构
17.设完全无向图中有n个顶点,则该完全无向图中共有(n(n-