数据结构模拟试题(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毁灭友情的方式有许多,最彻底的一种是借钱
数据结构模拟试题(1)
一、填空题:06分,每题02分
1、 从一个具有n个结点的单链表中搜索其值等于x的结点时, 在搜索成功的情况下, 需平均比较_______次。 
2、 根据一组记录(56,42,50,64,48)依次插入结点生成一棵AVL树时,当插入到值为_______的结点时需要进行旋转调整。 
3、 根据一组记录(56,74,63,64,48)依次插入结点生成一棵AVL树时,当插入到值为63的结点时需要进行________________调整。
单选题:10分,每题02分
4、 某算法的时间代价为T(n)=100n+10nlog2n+n2+10,其时间复杂度为( )。
A:O(n) B:O(nlog2n) 
C:O(n2) D:O(1) 
5、从一个长度为n的顺序表中顺序搜索一个值为x的元素时,在等概率的情况下,搜索成功时的平均比较次数为( )。 
A:n B:n/2 
C:(n+1)/2 D:(n-1)/2 
6、在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需要从前向后依次前移( )个元素。 
A:n-I B:n-I+1 
C:n-i-1 D:I 
7、 不带头结点的单链表first为空的判定条件是( )。 
A:first == NULL; B:first->link == NULL; 
C:first->link == first; D:D. first != NULL; 
8、 树中所有结点的度之和等于所有结点数加( )。 
A:0 B:1 
C:-1 D:2 
9、 一棵具有35个结点的完全二叉树的高度为( )。假定空树的高度为 -1。 
A:5 B:6 
C:7 D:8 
10、 对于具有e条边的无向图,它的邻接表中有 ( ) 个边结点。 
A:e-1 B:e 
C:2(e-1) D:2e 
11、 图的深度优先搜索类似于树的( )次序遍历。 
A:先根 B:中根 
C:后根 D:层次 
12、 设有向图有n个顶点和e条边,采用邻接表作为其存储表示,在进行拓扑排序时,总的计算时间为( )。 
A:O(nlog2e) B:O(n+e) 
C:O(ne) D:O(n2) 
13、 在下列排序算法中,( )算法使用的附加空间与输入序列的长度及初始排列无关。 
A:锦标赛排序 B:快速排序 
C:基数排序 D:归并排序 

二、判断题:10分,每题01分 
14、 数组是一种静态的存储空间分配,就是说,在程序设计时必须预先定义数组的数据类型和存储空间大小,由编译程序在编译时进行分配。 
15、 在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻。 
16、 每次从队列中取出的是具有最高优先权的元素, 这种队列就是优先级队列。 
17、 若让元素1,2,3依次进栈,则出栈次序1,3,2是不可能出现的情况。 
18、 递归的算法

简单、易懂、容易编写,而且执行效率也高。 
19、 用非递归方法实现递归算法时一定要使用递归工作栈。 
20、 一个广义表的表头总是一个广义表。 
21、 对用顶点表示活动的网络(AOV网)进行拓扑排序必然得到唯一的结果。 
22、 堆排序是一种稳定的排序算法。 
23、 在散列法中采取开散列(链地址)法来解决冲突时, 其装载因子的取值一定在(0,1)之间。 
三、中型计算题:10分,每题10分 
24、 设有一个n×n的对称矩阵A,将其上三角部分按列压缩存放于一个一维数组B中:
B=[A00, A01, A11, A02, A12, A22, ......, A0 n-1, A1 n-1, A2 n-1, ......, An-1 n-1]
同时有两个函数:max(i,j)和min(i,j),分别计算下标i和j中的大者与小者。试利用它们给出求任意一个A[i][j]在B中存放位置的公式。(若式中没有max(i,j)和min(i, j) 则不给分)
参考答案:
max(i,j)*(max(i,j)+1)/2+min(i,j)

25、 设有一个三维数组A[10][20][15],按页/行/列存放于一个连续的存储空间中,每个数组元素占4个存储字,首元素A[0][0][0]的存储地址是1000,求A[8][4][10]的地址。 
参考答案:
10880

答案解释:

对于三维数组,若第一、第二、第三维的元素个数为m1、m2、m3,每个元素所占存储字数为d,首地址为LOC(0,0,0),则对于任一数组元素A[i][j][k],它的存储地址为

LOC(i,j,k)=LOC(0,0,0)+(i*m2*m3+j*m3+k)*d

根据题意,m1=10, m2=20, m3=15, d=4, LOC(0,0,0)=1000,则有

LOC(8,4,10)=LOC(0,0,0)+(8*20*15+4*15+10)*4
=1000+2470*4=10880


26、 下图是一个3阶B树,试给出依次插入65和15之后B树的单关键码结点数和双关键码结点数。

单关键码结点数:
双关键码结点数:
参考答案:
单关键码结点数:9

双关键码结点数:2

四、小型计算题:40分,每题08分
27、 设有一个二维数组A[10][20],按列存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的地址是多少。 
参考答案:
226

答案说明:

按列存储时,计算A[i][j]地址的公式为

LOC(i,j)=LOC(0,0)+(j*m+i)*d

其中首地址LOC(0,0)=200, 每个数组元素的存储占用数d=1, 二维数组的行数m=10,则数组元素A[6][2]的存储地址为
LOC(6,2)=200+(2*10+6)*1=226

28、 设有一个10′10的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。 
参考答案:
43

答案说明:


毁灭友情的方式有许多,最彻底的一种是借钱
根据题意,矩阵A中当元素下标I与J满足I≤J时,任意元素A[I][J]在一维数组B中的存放位置为

(2*n-I-1)*I/2+J

但当I>J时,需要计算其对称元素A[J][I]在B中的存放位置

(2*n

-J-1)*J/2+I

因此,A[8][5]在数组B中对称元素A[J][I]的位置为

(2*10-5-1)*5/2+8=43

29、 已知一个有序表(15,26,34,39,45,56,58,63,74,76,83,94)顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34, 56, 58, 63, 94时的比较次数。


参考答案:
元素 34 56 58 63 94

比较次数 2 1 3 4 4

30、 已知一棵二叉搜索树的广义表表示为:28(12(,16),49(34(30),72(63))),求出从中依次删除72,12,49,28结点,最后得到的二叉搜索树的广义表表示。
广义表表示:
参考答案:
广义表表示:30(16,63(34))

31、 已知一个数据表为{48,25,56,32,40},请写出在进行快速排序的过程中每次划分后数据表的变化。

(0) [48 25 56 32 40]
(1)
(2)
(3)
参考答案:
(0) [48 25 56 32 40]

(1) [40 25 32] 48 56

(2) [32 25] 40 48 56

(3) 25 32 40 48 56

32、 已知有一个数据表为{30,18,20,15,38,12,44,53,46,18*,26,86},给出进行归并排序的过程中每一趟排序后的数据表变化。 
(0) [30 18 20 15 38 12 44 53 46 18* 26 86]
 
(1) 

(2)

(3)

(4)
参考答案:
(0) [30 18 20 15 38 12 44 53 46 18* 26 86]

(1) [18 30][15 20][12 38][44 53][18* 46][26 86]

(2) [15 18 20 30][12 38 44 53][18* 26 46 86]

(3) [12 15 18 20 30 38 44 53][18* 26 46 86]

(4) [12 15 18 18* 20 26 30 38 44 46 53 86]

33、 设散列表为HT[17], 待插入关键码序列为{"Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug","Sep","Oct","Nov","Dec"},散列函数为H(key)=?i/2?,其中i是关键码第一个字母在字母表中的序号(字母'A'在字母表中的序号为1,以下类推),采用线性探查法解决冲突。根据建立的闭散列表,搜索长度大于等于3的关键码有那些?
搜索长度大于等于3的关键码有: 
参考答案:
搜索长度大于等于3的关键码有:"June","July","Oct","Nov"

五、综合题:20分,每题10分
34、 已知二叉树中的结点类型BinTreeNode定义为:
struct BinTreeNode {ElemType data; BinTreeNode *left, *right;};
其中data为结点值域,left和right分别为指向左、右子女结点的指针域。参数bt指向一棵二叉树,引用参数x一开始具有的值小于树中所有结点的值。试根据下面的函数定义指出此算法的功能。
int JB(BinTreeNode* bt, ElemType& x)
{
if(bt==NULL) return 1;
else {
if(JB(bt->left,x)==0) return 0;
if(bt->datax=bt->data;
if(JB(bt->right,x)==0) return 0;
else return 1;
}
}

算法功能: 
参考答案:
算法功能:判断二叉树bt是否为一棵二叉搜索树,若是则返回1否则返回0。

六、填空题(主观):04分,每题02分
35、 快速排序在平均

情况下的空间复杂度为____________。 
参考答案:
O(log2n)
36、 假定对长度为n的线性表进行索引顺序搜索,并假定每个子表的长度均为 ,则进行索引顺序搜索的时间复杂度为________。 
参考答案:
O()




毁灭友情的方式有许多,最彻底的一种是借钱

相关文档
最新文档