数据结构本科期末综合练习三运算题docWord文件下载.docx
《数据结构本科期末综合练习三运算题docWord文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构本科期末综合练习三运算题docWord文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
LOC(i,j)=LOC(0,0)+(j*m+i)*d
其巾首地址LOC(O,0)=200,每个数组元素的存储占用数d=1,二维数组的行数m=10,则数组元素A[6][2]的存储地址为
L0C(6,2)=200+(2*10+6)*1=226。
4.设有一个10x10的矩阵A,将其下三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。
根据题意,矩阵A屮当元素下标I与J满足I彡J时,
任意元素A[I][J]在一维数组B中的存放位置为IMl+1)/2+J,
因此,A[8][5]在数组B中位置为8*(8+1)/2+5=4U
5.设有一个10x10的对称矩阵A,将其上三角部分按行存放在一个一维数组B中,A[0][0]存放于B[0]中,那么A[8][5]存放于B中什么位置。
根据题意,矩阵A中当元素下标I与J满足ISJ时,任意元素A[I][J]在一维数组B中的存放位罝为
(2*n-I-1)*I/2+Jo
但当I〉J时,需要计算其对称元素A[J][I]在B中的存放位置
(2*n-J-1)*J/2+I,
因此,A[8][5]在数组B屮对称元素A[J][1]的位置为
(2*10-5-1)*5/2+8=43o
6.设有一个二维数组A[m][n]采用按行存储,假设A[0][0]存放位罝在644⑽,A[2][2]存放位
置在676⑽,每个元素占一个存储字,则A[4][4]存放在什么位置。
根据二维数组地址计算公式:
L0C(i,j)=L0C(0,0)+(i*n+j)*d
根据题意,L0C(0,0)=644,L0C(2,2)=676,d=1,有
676=644+(2*n+2)
解得n=15。
代入LOC(i,j)=L0C(0,0)+(i*n+j)*d,得L0C(4,4)=644+4*15+4=708
7.设有一个二维数组A[ll][6],按行存放于一个连续的存储空间中,A[0][0]的存储地址是1000,每个数组元素占4个存储字,则A[8][4]的地址在什么地方。
对于二维数组,若第一、第二维的元素个数为m和n,每个元素所片存储字数为d,首地址为LOC(0,0),则对于任一•数组元素A[i][j],它的存储地址为:
LOC(i,j)=LOC(0,0)+(i*n+j)*d根据题意,LOC(8,4)=LOC(O,0)+(8*6+4)*4二1000+52*4=1208。
8.设有一个三维数组A[10][20][15],按页/行/列存放于一个连续的存储空间屮,每个数组元素占4个存储字,首元素A[0][0][0]的存储地址是1000,则A[8][4][10]存放于什么地方。
对于三维数组,若第一、第二、第三维的元素个数为mi、m2、rn3,每个元素所占存储字数为d,首地址为LOC(0,0,0),则对于任一数组元素A[i][j][k],它的存储地址为:
LOC(i,j,k)=LOC(0,0,0)+(i*此*nb+j*nu+k)*d
根裾题意,nn=10,m2=20,m:
5=15,d=4,LOC(O,0,0)=1000,则有
LOC(8,4,10)=LOC(0,0,0)+(8*20*15+4*15+10)*4
=1000+2470*4=10880
9.假定一棵二叉树广义表表示为a(b(c),d(e,f)),分别写出对它进行中序、后序、按层遍历的结果。
宇序e+/后按
:
c,b,a,e,d,f:
c,b,e,f,d,a:
a,b,d,c,e,f
10.假定一棵二叉树的广义表表示为A(B(,D(G)),C(E,F)),分别写出对它进行前序、中序、按层遍历的结果。
前序:
A,B,D,G,C,E,F中序:
B,G,D,A,E,C,F
按层:
A,B,C,D,E,F,G
11.假定一棵普通树的广义表表示为a(b(e),c(f(h,i,j),g),d),分别写出先根、后根、按层遍历的结果。
先根:
a,b,e,c,f,h,i,j,g,d后根:
e,b,h,i,j,f,g,c,d,a按层:
a,b,c,d,e,f,g,h,i,j
12.己知一棵二叉树的前序和屮序序列,求该二叉树的后序序列。
先根序列:
A,B,C,D,E,F,G,H,I,J
屮根序列:
C,B,A,E,F,D,I,H,J,G
后根序列:
C,B,F,E,I,J,H,G,D,A
13.已知一棵二叉树的屮序和后序序列如下,求该二叉树的前序序列。
中根序列:
c,b,d,e,a,g,i,h,j,f
c,e,d,b,i,j,h,g,f,a
M.己知一棵二叉树的中序和后序序列如下,求该二叉树的高度(假定空树的高度为-1)和度为2、度为1及度为0的结点个数。
中序序列:
c,b,d,e,a,g,i,h,j,f后序序列:
高度:
4//2分
度为2的结点数:
3度为1的结点数.•3度为0的结点数:
4
15.已知一棵二叉树的静态数组表示(即顺序存储)如下,其中-1表示空,请分别写出该二叉树的前序、中序、后序遍历序列。
0123456789101112
20
8
46
5
15
30
-1
10
18
35
前序序列:
20,8,5,15,10,18,46,30,35
中序序列:
5,8,10,15,18,20,30,35,46
后序序列:
5,10,18,15,8,35,30,46,20
16.已知一棵树的静态双亲表示如下,其中用-1表示空指针,树根结点存于0号单元,分别求出该树的叶子结点数、单分支结点数、两分支结点数和三分支结点数。
a
b
c
d
e
f
g
h
•
1
J
k
3
6
9
12345678910
序号:
0data:
parent:
叶子结点数:
5单分支结点数:
3两分支结点数:
2三分支结点数:
17.有7个带权结点,其权值分别为3,7,8,2,6,10,14,试以它们为叶子结点生成一棵霍夫曼树,求出该树的带权路径长度、高度、双分支结点数。
带权路径长度:
131高度:
双分支结点数:
18.一个一维数组a[10]中存储着有序表(15,26,34,39,45,56,58,63,74,76),根据折半搜索所对应的判定树,写出该判定树中度为1的结点个数,并求出在等概率情况下进行成功搜索时的平均搜索长度。
度为1的结点个数:
平均搜索长度:
29/10
19.已知一个有序表(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
元素
比较次
数
20.假定一个线性序列为(38,52,25,74,68,16,30,54,90,72),根据此线性序列中元素的排列次序生成的一棵二叉搜索树,求出对该二叉搜索树搜索38,74,68,30,72等元素时的比较次数。
21.假定一个线性序列为(56,27,34,95,73,16,50,62,65),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树的高度(假定树根结点的高度为0)、度为2的结点个数和叶子结点个数。
度为2的结点个数:
2叶子结点数:
22.假定一个线性序列为(38,42,55,15,23,44,30,74,48,26),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树中左子树为空的所有单支结点和右子树为空的所有单支结点,请按照结点值从小到大的次序写出。
左子树为空的所有单支结点:
15,23,42,44右子树为空的所有单支结点:
23.己知一棵二叉搜索树的广义表表示为:
28(12(,16),49(34(30),72(63))),求出从中依次删除72,12,49,28结点后,得到的二叉搜索树的广义表表示。
假定每次删除双支结点时是用它的中序后继结点的值來取代,接着删除其中序后继结点。
广义表表示:
30(16,63(34))
24.假定一组记录为(40,28,16,56,50,32,30,63),按次序插入每个结点生成一棵AVL树,根据插入过程填写下表,在相应位置填写所需要的调整类型:
“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,若不需要旋转则填写“无”。
40
28
16
50
32
无
右单
先右后左
左单
数据:
调整:
25.假定一组记录为(40,28,1