数据结构试题试题及答案1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 一、 单选题每小题2分共8分
1.在一个长度为n的线性表中顺序查找值为x的元素时查找成功时的平均查
找长度即x同元素的平均比较次数假定查找每个元素的概率都相等
为 C 。
A.n B.n/2 C.(n+1)/2 D.(n
-1)/2
2 。以下数据结构中哪一个是非线性结构( D )
A. 队列 B. 栈 C. 线性表 D. 二叉树
3.若有18个元素的有序表存放在一维数组A[19]中第一个元素放A[1]中现
进行二分查找则查找A3的比较序列的下标依次为( D )
A. 123 B. 9523
C. 953 D. 9423
4.设有6个结点的无向图该图至少应有( A)条边才能确保是一个连通图。
A.5 B.6 C.7 D.8
5在下列排序方法中 c 方法平均时间复杂度为0(nlogn)最坏情况下
时间复杂度为0(n2) d 方法所有情况下时间复杂度均为0(nlogn)。
a. 插入排序 b. 希尔排序 c. 快速排序 d. 堆排序
6具有m个结点的二叉排序树其最大深度为 f 最小深度为 b 。
a. log 2 m b. └ log2 m ┘ +1 c. m/2
d .┌ m/2 ┐ -1 e. ┌ m/2 ┐ f. m
7下列排序方法中属于不稳定的排序方法是(A )
A.直接插入排序法 B.冒泡排序法
C.基数排序法 D.归并排序法
8在最好和最坏情况下的时间复杂度均为O(nlogn)且稳定的排序方法是
( C )
A.快速排序 B.堆排序
C.归并排序 D.基数排序
9设有一个二维数组A[m][n]假设A[0][0]存放位置在644(10)A[2][2]存放位
置在676(10)每个元素占一个空间问A[3][3](10)存放在什么位置脚注(10)表示用10进制表示。
A688 B678 C692 D696
10 由权值分别为118625的叶子结点生成一棵哈夫曼树它的带权路径
长度为
A 24 B 71 C 48 D 53
2 11某二叉树的先序序列和后序序列正好相反则该二叉树一定是B 的 二
叉 树。 A、空或只有一个结点 B、高度等于其结点数 D、任意结点无右孩子 C、
任意结点无左孩子 12将一棵有100个结点的完全二叉树从上到下从左到右依次对结点进行编号根结点的
编号为1则编号为49的结点的左孩子的编号为___A___。
A.98 B.99
C.50 D.48
13.设有100个元素用折半查找法进行查找时最大比较次数是____D_ 。
A.25 B.50
C.10 D.7
14.在含有n个项点有e条边的无向图的邻接矩阵中零元素的个数为___D_____。
A.e B.2e
C.n2-e D.n2-2e
15.图的深度优
先遍历类似于二叉树的___A____。
A.先序遍历 B.中序遍历
C.后序遍历 D.层次遍历
16.设长度为n的链队列用单循环链表表示若只设头指针则入队操作的时间复杂度为
_____C__。
A. O(1) B. O(log2n)
C. O(n) D. O(n2)
17.在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是
____B____
AO1 B.On
C.O(nlogn) D.O(n2)
18队和栈的主要区别是____D____
A.逻辑结构不同 B.存储结构不同
C.所包含的运算个数不同 D.限定插入和删除的位置不同
19链栈与顺序栈相比比较明显的优点是___D_____
A.插入操作更加方便 B.删除操作更加方便
C.不会出现下溢的情况 D.不会出现上溢的情况
20在目标串T[0…n-1]=”xwxxyxy”中对模式串p[0…m-1]=”xy”进行子串定位操作的
结果___C____
A.0 B.2
C.3 D.5
21已知广义表的表头为A表尾为(B,C)则此广义表为____B____
3 A.A,(B,C) B.A,B,C
C.(A,B,C) D.(( A,B,C))
22二维数组A按行顺序存储其中每个元素占1个存储单元。若A[1][1]的存储地址为420
A[3][3]的存储地址为446则A[5][5]的存储地址为___C____
A.470 B.471
C.472 D.473
23. 向堆中插入一个元素的时间复杂度为____A____。
A、 O(log2n) B、 O(n)
C、 O(1) D、 O(nlog2n)
24.用某种排序方法对关键字序列258421471527683520进行排序时
序列的变化情况是如下____D____
201521254727683584
152021253527476884
152021252735476884
则所采用的排序方法是________
A.选择排序 B.希尔排序
C.归并排序 D.快速排序
25.线性表若采用链表存储结构时要求内存中可用存储单元的地址__D______
、必须是连续的 、部分地址必须是连续的
、一定是不连续的 、连续不连续都可以
二、 填空题每空1分共32分
1数据的逻辑结构被分为_集合_________、 _线性_________ 、___树_____和___
图_____四种。
2 假定一棵树的广义表表示为ACDEFGHIJ则树中所含
的结点数为__9________个树的深度为_3__________树的度为___3______。
3 对于一个具有n个顶点和e条边的有向图和无向图在其对应的邻接表中
所含边结点分别有__e_____个和__2e______个。
4 在堆排序的过程中对任一分支结点进行筛运算的时间复杂度为_Olog2 n
_______整个堆排序过程的
时间复杂度为_Onlog2 n_______。
5一棵高度为5的二叉树中最少含有_____5____个结点最多含有___31_____个
结点
4 一棵高度为5的理想平衡树中最少含有_________个结点最多含有
_________个结点。
6 设有一个顺序共享栈S[0n-1]其中第一个栈项指针top1的初值为
-1第二个栈顶指针top2的初值为n则判断共享栈满的条件是top1+1=top2
三 判断题 3、1线性表的逻辑顺序与物理顺序总是一致的。
2线性表的顺序存储表示优于链式存储表示。
3线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连
续。
4二维数组是其数组元素为线性表的线性表。
5每种数据结构都应具备三种基本运算插入、删除和搜索。
1错2错3对4错5对
6 如果删除二叉排序树中一个结点再按照二叉排序树的构造原则重新插入 上 去一定
能得到原来的二叉排序树。 ( CUO) 7线性的数据结构可以顺序存储也可以链接存储。非线性的数据结构只能链接
存储。 CUO 8、直接选择排序是一种不稳定的排序方法。 CUO
9、在只有度为0和度为k的结点的k叉树中设度为0的结点有n0个度为k的结点有
nk个则有n0=nk+1。 CUO
10、数据的存储结构不仅有顺序存储结构和链式存储结构还有索引结构与散列结构。
CUO
四应用题
1已知Hash函数为 HK=K mod 13 散列地址为0 --14
用二次探测再散列处理冲突给出关键字23345624751249, 52
36920655在散列
地址的分布。
0 1 2 3 4 5 6 7 8 9 10 11
12 13 14
2. 右图为一棵3阶B
树。 2025
a. 画出在该树上插入元素15后的B 树。 │
b. 接着再删除元素35画出删除后的B 树。 (10,14)2135
4.已知某无向图的邻接表存储结构如图所示。
5 a.请画出该图。
b.根据存储结构给出其深度优先遍历序列及广度优先遍历序列。
c.画出其深度优先生成树及广度优先生成树。
0 a 2 4 /\
1
b 2 3
4 /\
2
c 0 1
4 /\
3 d 1 /\
4
e 0 1
2 /\
3、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句将其编
号填入相应的括号内。
1对于一个具有n个结点和e条边的无向图若采用邻接表表示则顶点表
的大小为A所有边链表中边结点的总数为B。
2采用邻接表存储
的图的深度优先遍历算法类似于树的C。
3采用邻接表存储的图的广度优先遍历算法类似于树的D。
4判断有向图是否存在回路除了可以利用拓扑排序方法外还可以利用E。
供选择的答案
A①n②n+1③n-1④n+e
B①e/2②e③2e④n+e
C~D①中根遍历②先根遍历③后根遍历④按层次遍历
E①求关键路径的方法②求最短路径的Dijkstra方法
③深度优先遍历算法④广度优先遍历算法
4假定线性表L=33,85,21,56,30,63,42,91,76,调用顺序表的排序算法
void Sort(List& L)对此表进行排序请写出排序过程。将每一步结果写出
1[ 33 85 ] 21 56 30 63 42 91 76
2[ 21 33 85 ] 56 30 63 42 91 76
3[ 21 33 56 85 ] 30 63 42 91 76
4[ 21 30 33 56 85 ] 63 42 91 76
5[ 21 30 33 56 63 85 ] 42 91 76
6[ 21 30 33 42 56 63 85 ] 91 76
6 7[ 21 30 33 42 56 63 85 91 ] 76
8[ 21 30 33 42 56 63 76 85 91 ]
2、下图所示的森林
(1) 求树a的先根序列和后根序列
(2) 求森林先序序列和中序序列
3将此森林转换为相应的二叉树 A
B C
D E
F
G
H
I
J
K
(a)
(b)
2
(1) ABCDEF; BDEFCA(2) ABCDEFGHIJK; BDEFCAIJKHG林转换为相应的二叉树 A
G
B
C
D
E
F
H
I
J
K
六编程题
1 设计在二叉排序树上查找结点X的算法。
bitree *bstsearch1(bitree *t, int key)
{
bitree *p=t;
while(p!=0) if (p->key==key) return(p);else if
(p->key>key)p=p->lchild; else p=p->rchild;
return(0);
}
2写出向二叉排序树中插入一个元素的非递归算法。
Void insert(BtreeNode * BST, const ElemType & item)
{
7 BtreeNode *t=BST, *parent=NULL;
While(t!=NULL){
Parent=t;
If(item
Else t=t->right;
}
BtreeNode *p=newBtreeNode;
p->data=item;
p->left=p->right=NULL;
if(parent= =NULL) BST=p;
else if(item
else parent->right=p;
}