数据结构应用题.docx
- 文档编号:27794915
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:25
- 大小:593.19KB
数据结构应用题.docx
《数据结构应用题.docx》由会员分享,可在线阅读,更多相关《数据结构应用题.docx(25页珍藏版)》请在冰豆网上搜索。
数据结构应用题
一、应用题
1.已知关键字序列为:
(74,33,52,41,13,88,66,59)哈希表长为9,哈希函数为:
H(k)=k%9,解决冲突用线性补偿探测法
(取Q=5),试构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】
(1)哈希表:
012345678
59
74
88
13
41
33
52
66
2
1
2
1
1
1
1
2
(2)ASL=(5*1+3*2)/8=11/8
2.已知一个AOV网如图所示。
(1)试画出它的邻接链表。
(顶点号递减出现在各邻接表中)
(2)试写出按照拓扑排序算法得到的拓扑序列。
【答案】
(1)
(2)v4,v6,v1,v3,v5,v2
3.已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:
(1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态;
(2)简述算法f30的功能。
voidf30(SeqList*L){
inti,j;
for(i=j=0;i
if(L->data[i]>=0){
if(i!
=j)L->data[j]=L->data[i];
j++;
}
L->length=j;
}
【答案】
(1)L=(21,19,0,34,30)
(2)删除顺序表中小于0的数。
4.已知关键字序列{34,26,47,12,63,41,22,59},利用堆排序的方法对其排序。
(1)写出在构成初始堆后关键字的排列情况。
(2)写出在堆排序的过程中输出前4个记录时,每次调整后关键字的排列情况。
【答案】
(1)初始堆:
{12,26,22,34,63,41,47,59}
(2)输出12后:
{22,26,41,34,63,59,47}
输出22后:
{26,34,41,47,63,59}
输出26后:
{34,47,41,59,63}
输出34后:
{41,47,63,59}
5.请用克鲁斯卡尔算法构造下图所示网络的最小生成树。
【答案】
最小生成树如下图所示:
6.给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。
(1)快速排序
(2)希尔排序(d1=4)(3)归并排序
【答案】
给出一组关键字K={14,28,17,9,7,21,13,4,11},写出用下列方法排序时,第一趟结束时关键字的排列状态。
(1)快速排序:
{11,4,13,9,7}14{21,17,28}
(2)希尔排序(d1=4):
{7,21,13,4,11,28,17,9,14}
(3)归并排序:
[11,28][9,17][7,21][4,13][11]
7.假设一棵二叉树的先根遍历序列为ABCDEFGHI,中根遍历序列为ADCEBFHIG。
(1)画出该二叉树;
(2)写出后根遍历序列。
【答案】
(1)二叉树:
(2)后根遍历序列:
DECIHGFBA
8.已知关键字序列为:
(93,42,79,131,12,102,27),哈希表长为9,哈希函数为:
H(k)=k%9,解决冲突用线性探测再
散列法,试构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】
(1)哈希表:
012345678
27
93
12
131
42
79
102
(2)ASL=(5*1+1*2+1*6)/7=13/7
9.设网络如图所示,试用普里姆算法按照并入最小生成树中边的次序填写下表(从顶点A开始),并画出对应的最小生成树。
12
3
4
5
始点
终点
权值
【答案】
12
3
4
5
始点
A
R
C
C
E
终点
R
C
D
E
F
权值
2
2
2
3
1
10.依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:
1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;
2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。
写出满足上述要求的序列中的第一个元素。
【答案】
(1)ASL=(1+2*2+3*3+3*4)/9=26/9
(2)8
11.
(1)画出对表长为13的有序顺序表进行二分查找的判定树;
(2)已知关键字序列为(12,14,16,21,24,28,35,43,52,67,71,84,99),写出在该序列中二分查找37时所需进行的比较次数。
【答案】
(1)如图所示.
(2)4次
12.已知二叉树如右图所示。
(1)画出该二叉树的二叉链表;
(2)分别写出该二叉树的先根、中根和后根遍历序列。
【答案】
(1)
(2)先根遍历序列:
ABDCEGF
中根遍历序列:
DBAEGCF
后根遍历序列:
DBGEFCA
13.已知关键字序列为:
(70,31,52,41,88,12,27,66)哈希表长为9,哈希函数为:
H(k)=k%9,解决冲突用线性探测再散列法,试构造哈希表,并求等概率下查找成功的平均查找长度。
【答案】
(1)哈希表:
012345678
88
27
12
31
41
66
70
52
(2)ASL=(4*1+2*2+1*3+1*4)/8=15/8
14.设一段文字中七个常用汉字为{的,地,得,和,个,在,是},每个字符的使用频率分别为{26,6,4,7,9,8,18}。
请画出对应的哈夫曼编码树(按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。
【答案】
哈夫曼树:
哈夫曼编码
的
地
得
和
个
在
是
11
1011
1010
000
100
001
01
15.假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循环队列中队尾元素的位置和元素的个数。
(1)写出队满的条件表达式;
(2)写出队空的条件表达式;
(3)设m=40,rear=13,quelen=19,求队头元素的位置;
(4)写出一般情况下队头元素位置的表达式。
【答案】
(1)quelen==m
(2)quelen==0
(3)35
(4)(rear-quelen+1+m)%m
16.下列是一棵五阶B-树,依次执行以下两步操作,画出每一步执行后所得到的B-树形。
(1)插入n;
(2)删除e。
【答案】
(1)插入n:
(2)删除e:
17.选取哈希函数为H(K)=K%13,用链地址法处理冲突。
试在0~12的散列地址空间中对关键字序列{87,25,310,08,
27,132,68,95,187,123,70,63,47}构造哈希表,并求出等概率下查找成功的平均查找长度。
【答案】
H(87)=87%13=9
H(25)=25%13=12
H(310)=310%13=11
H(8)=8%13=8
H(27)=27%13=1
H(132)=132%13=2
H(68)=68%13=3
H(95)=95%13=4
H(187)=187%13=5
H(123)=123%13=6
H(70)=70%13=5
H(63)=63%13=11
H(47)=47%13=8
ASL=(1*10+2*3)/13=16/13
18.已知一组数据元素为(57,24,96,73,18,45,30,40,82),要求:
(1)试从空树开始画出按元素排列顺序输入而生成的一棵二叉排序树;
(2)画出删除结点57后的二叉排序树。
【答案】
(1)二叉排序树:
(2)删除结点57后的二叉排序树:
或:
19.假设有一个如下图的8×8矩阵,矩阵元素都是整型量(次对角线以上的元素都是0)。
若将上述矩阵中次对角线及其以下的元素按行优先压缩存储在一维数组B中,请回答下列问题:
(1)B数组的体积至少是多少?
(2)若a18存储在B[0]中,a56存储在B[k]中,则k值为多少?
(1)
(2)
【答案】
(1)36
(2)13
20.已知有向图的邻接表如图所示,
(1)写出从顶点A出发,对该图进行广度优先搜索遍历的顶点序列;
(2)画出该有向图的逆邻接表。
【答案】
(1)ABDCE
(2)
21.假设以带头结点的单链表表示线性表,阅读下列算法f30,并回答问题:
(1)设线性表为(a1,a2,a3,a4,a5,a6,a7),写出执行算法f30后的线性表;
(2)简述算法f30的功能。
voidf30(LinkListL)
{
//L为带头结点单链表的头指针
LinkListp,q;
P=L;
while(p&&p->next){
q=p->next;
p->next=q->next;
p=q->next;
free(q);
}
}
【答案】
(1)(a2,a4,a6)
(2)删除单链表中数据结点序号为奇数的那些结点。
22.已知有向图的邻接表如图所示,
(1)写出从顶点A出发,对该图进行广度优先搜索遍历的顶点序列;
(2)画出该有向图的逆邻接表。
【答案】
(1)ABDCE
(2)
23.依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},完成下列操作:
1)构造一棵二叉排序树,计算在等概率情况下该二叉排序树的平均查找长度ASL;
2)若变更序列中元素的排列,可构造出平均查找长度达到最小的二叉排序树。
写出满足上述要求的序列中的第一个元素。
【答案】
(1)ASL=(1+2*2+3*3+3*4)/9=26/9
(2)8
24.假设通信电文使用的字符集为{a,b,c,d,e,f,g},字符的哈夫曼编码依次为:
0110,10,110,111,00,0111和010。
(1)请根据哈夫曼编码画出此哈夫曼树,并在叶子结点中标注相应字符;
(2)若这些字符在电文中出现的频度分别为:
3,35,13,15,20,5和9,求该哈夫曼树的带权路径长度。
【答案】
(1)
25.由森林转换得到的对应二叉树如图所示,写出原森林中第三棵树的前序序列和后序序列。
【答案】
前序序列:
GHIJ后序序列:
HJIG
26.假设一棵树的先根序列为ABCEFIJGHKD,后根序列为BEIJFGKHCDA。
请画出该树。
【答案】
(1)因为树的先根和后根遍历序列分别与其转换后对应的二叉树的先根和中根遍历序列相同,所以可先得到的对应的二叉树如下图所示:
(2)根据树与二叉树的转换规则,可得到树如下图所示:
27.已知一个散列表如下图所示:
35
20
33
48
59
0123456789101112
其散列函数为h(key)=key%13,处理冲突的方法为双重散列法,探查序列为:
hi=(h(key)+
*h1(key))%m
=0,1,…,m-1
其中
h1(key)=key%11+1
回答下列问题:
(1)对表中关键字35,20,33和48进行查找时,所需进行的比较次数各为多少?
(2)该散列表在等概率查找时查找成功的平均查找长度为多少?
【答案】
(1)对关键字35、20、33和48进行查找的比较次数为3、2、1、1;
(2)平均查找长度
28.已知二叉树的先序序列和中序序列分别为HDACBGFE和ADCBHFEG。
(1)画出该二叉树;
(2)画出与
(1)求得的二叉树对应的森林。
【答案】
(1)
29.已知关键字序列为:
(75,33,52,41,12,88,66,27)哈希表长为10,哈希函数为:
H(k)=k%9,解决冲突用线性探测
再散列法,试构造哈希表,求等概率下查找成功的平均查找长度.
【答案】
(1)哈希表:
0123456789
27
75
12
41
33
52
88
66
(2)ASL=(5*1+2*2+1*7)/8=16/8=2
30.已知关键字序列为{66,80,36,55,93,21,42,72,38,47,11},试写出希尔排序过程中每一趟排序后关键字的排
列情况(di=5,2,1)。
【答案】
(1)11,42,36,38,47,21,80,72,55,93,66
(2)11,21,36,38,47,42,55,72,66,93,80
(3)11,21,36,38,42,47,55,66,72,80,93
31.已知3阶B-树如图所示,
(1)画出将关键字6插入之后的B-树;
(2)画出在
(1)所得树中插入关键字2之后的B-树。
(1)
(2)
【答案】
(1)
(2)
32.阅读下列算法,并回答问题:
(1)Q、Q1和Q2都是队列结构,设队列Q=(1,0,-5,2,-4,-6,9),其中1为队头元素,写出执行f31(&Q,&Q1,&Q2)之后队列Q、Q1和Q2的状态;
(2)简述算法f31的功能。
(注:
lnitQueue、EnQueue、DeQueue和QueueEmpty分别是队列初始化、入列、出队和判队空的操作)
voidf31(Queue*Q,Queue*Q1,Queue*Q2){
inte;
lnitQueue(Q1);
lnitQueue(Q2);
while(!
QueueEmpty(Q)){
e=DeQueue(Q);
if(e>=0)EnQueue(Q1,e);
elseEnQueue(Q2,e)
}
}
【答案】
(1)Q=()Q1=(1,0,2,9)q2=(-5,-4,-6)
(2)将Q队列中的数据全部出队;不小于0的进Q1,否则进Q2。
33.对关键字序列(5,8,1,3,9,6,2,7)按从小到大进行快速排序。
(1)写出排序过程中前两趟的划分结果;
(2)快速排序是否是稳定的排序方法?
【答案】
(1)(1,2,3,5,7,6,8,9)
(2)否
34.假设通信电文使用的字符集为{a,b,c,d,e,f,g,h},各字符在电文中出现的频度分别为:
7,26,2,28,13,10,3,11,试为这8个字符设计哈夫曼编码。
要求:
(1)画出你所构造的哈夫曼树(要求树中左孩子结点的权值不大于右孩子结点的权值);
(2)按左分支为0和右分支为1的规则,分别写出与每个字符对应的编码。
(1)
(2)
【答案】
(1)
(2)a:
0101
b:
10
c:
01000
d:
11
e:
011
f:
000
g:
01001
h:
001
35.根据关键字序列{48,68,72,60,36,25,45,40}
(1)构造一棵二叉排序树;
(2)求出等概率下的平均查找长度ASL。
【答案】
(1)二叉排序树
(2)ASL=(1*1+2*2+4*3+1*4)/8=21/8
36.给出一组关键字K={10,18,4,3,6,12,9,15,8},写出用下列方法排序时,第一趟结束时的状态。
(1)快速排序
(2)归并排序
【答案】
(1)快速排序8,9,4,3,6,10,12,15,18
(2)归并排序10,18,3,4,6,12,9,15,8
37.假设一棵二叉树的先根遍历序列为ABCDEFGHI,中根遍历序列为ADCEBFGHIJ。
(1)画出该二叉树;
(2)写出后根遍历序列。
【答案】
(1)二叉树:
(2)后根遍历序列:
DECIHGFBA
38.已知一个AOV网如右图所示。
(1)试画出它的邻接表。
(表结点按顶点编号递减排列)
(2)求出应用拓扑排序算法求得的拓扑排序序列。
【答案】
(1)邻接表:
(2)拓扑排序序列:
v1,v3,v5,v2,v4
39.已知二叉树如图1所示,试写出该二叉树的先根、中根和后根遍历序列。
【答案】
先根:
ABCDEFGHI
中根:
ADCEBFHIG
后根:
DECIHGFBA
40.对有序表{25,36,40,48,56,60,68,72,95}进行折半查找方法查找,
(1)求出查找36和95时所需比较的次数;
(2)画出判定树;(3)求ASL和MSL。
【答案】
(1)36比较2次;95比较4次
(2)判定树:
(3)
ASL=(1+4+12+8)/9=25/9=2.78
MSL=4
41.有七个带权结点,其权值分别为{3,7,18,2,6,10,14},试以它们为叶子结点构造一棵哈夫曼树(请按照每个结点
的左子树根结点的权小于等于右子树根结点的权的次序构造),并计算出该树的带权路径长度。
【答案】
(1)哈夫曼树
(2)带权路径长度WPL=(2+3)*4+(6+7+10)*3+(14+18)*2=153
42.已知一个图的邻接表如下所示.请画出该邻接表表示的图,并依此邻接表进行从顶点A出发的深度优先遍历,求出由此得到的遍历序列和深度优先生成树。
【答案】
(1)该邻接表表示的图:
(2)从顶点A出发的深度优先遍历序列:
ABDCE
深度优先生成树:
43.已知二叉树的先序序列和中序序列分别为ABDEHCFI和DBHEACIF,
(1)画出该二叉树的二叉链表存储表示;
(2)写出该二叉树的后序序列。
【答案】
(1)
(2)DHEBIFCA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 应用题