数据结构期末考试试题总结

数据结构期末考试试题总结

第1章 第一单元课程介绍; 数据结构第1~2章

1:在双向循环链表中,在q指针所指的结点后插入p所指向的新结点,其修改指针的操作是( )
(4.0分)

解:
p->prior=q; p->next=q->next; q->next->prior=p; q->next=p;

解:在改变原链表之前,将p指针(插入指针)连接好,再去把p的next的prior指向q;再把p的next指向q,主要是不能丢失p原有的next节点;

a14FSS.png 2:顺序表中第一个元素的存储地址是200,每个元素的长度为2,则第6个元素的地址是( )(4.0分)

解:

顺序结构中,第n个元素的地址为An=A0+(n-1)*L (A为地址,L为元素长度)。

A6=200+(6-1)*2=210

第2章 第二单元第3章栈和队列

1.0中缀表达式为( A + B ) × C – D / E,则其后缀表达式为何?

1.先用括号将优先顺序分出来

​ (((A+B)xC)-(D/E))

2.将运算符取代右边最近之右括号

​ (1) (((A+BXC)-(DE/)

​ (2) (((ABXC+DE/-

3.把左括号全部拿掉,即为所得。

​ ABxC+DE/-

2.0中缀表达式为A+B×C-D,则其前缀表达式为何?

  1. 先用括号将优先顺序分出来

((A+(BxC))-D)

  1. 将运算符取代左边最近之左括号

    ((A+xBC))-D)

    (+AxBC))-D)

​ \-+AxBC))D)

  1. 把右括号全部拿掉,即为所得。

-+AxBCD

  1. 后缀表达式为2 5 + 4 × 6 3 / -,则其后缀式求值结果为何?

    答案:26

处理句元处理动作操作数栈
2push(2)push(2)
5push(3)push(5) push(2)
+作两次Pop,先Pop出来的5为第二操作数,后Pop出来的2为第一操作数,执行5+2=7,设为X,Push(X)push(7)
4push(4)push(4) push(7)
x作两次Pop,先Pop出来的4为第二操作数,后Pop出来的7为第一操作数,执行4x7=28,设为Y,Push(Y)push(28)
6push(6)push(6) push(28)
3push(3)push(3) push(6) push(28)
/作两次Pop,先Pop出来的3为第二操作数,后Pop出来的6为第一操作数,执行6/3=2,设为Z,Push(Z)push(2) push(28)
-作两次Pop,先Pop出来的2为第二操作数,后Pop出来的28为第一操作数,执行28-2=26,Push(26)26

第3章 第三单元第4章 串、数组、广义表

1.0串“abcaabbabcab”的next数组为( )。(5.0分)

B、011122312345

j123456789101112
模式串abcaabbabcab
next[j]011122312345

口诀: next[j]=前同数+1(即串起始下标值)

(前同数:在j-1位置之前,字首==字尾的字数)

解:j=1,时next[j]=0;
j=2时候,其他情况next[j]=1;j=3时候,其他情况;j=4,其他情况;j=5,前同数+1=2……以此类推。

2.0串“abcaabbabcab”的nextval为( )。(5.0分)

C、011021301105

j123456789101112
模式串abcaabbabcab
next[j]011122312345
nextval[j]011021301105

解答:(1)第一位nextval必为0,第二位的字符如何和第一位相等,则为0,不同则为1

(2)第三位next值为1,与第一位比较,不同nextval= next=1;

(3)第四位next值为1,与第一位比较,相同则第四位nextval=第一位nextval=0

(4)第五位next值为2,与第二位比较,不同则nextval= next=2;

(5)第六位next值为2,则与第二位比较,相同则第二位next=1,第二位继续与第一位比较,不同,则nextval[6]=1

(6)第七位next值为3,则与第三位比较,不同nextval=next=3;

(7)第八位next值为1,与第一位比较,相同,nextval=next=0;

(8)第九位next值为2,则与第二位比较,相同,第二位next=1,则第二位继续与第一位比较,不同,则nextval【9】=
next【2】

(9)第十位next值为3,则与第三位比较,相同next[3]=1,则第三位next继续与第一位比较不同,则nextval[10]=1;

(10)第十一位next值为4,则与第四位比较,相同则第四位next=1,第四与第一比较,相同,则nextval[11]=
next[0]

(11)第十二位next值为5,与第五位比较,不同则nextval= next=5

第4章 第四单元第5章树和二叉树

1.0设某棵二叉树的中序遍历序列为BDCAEHGIF,后序遍历序列为DCBHIGFEA,则先序遍历该二叉树得到序列为( )。

我们知道先序遍历的特点:根->左->右,中序遍历的特点:左->根->右;后序遍历:左->右->根;

可以使用后序找出根,再由中序找出左右孩子;

(1)后序:DCBHIGFEA 中序:BDCAEHGIF可以分出树的根A
(2)后序:DCB 中序:BDC左子树根为B 可以画出左子树
(3)1)后序:HIGFE 中序:EHGIF 2)后序:HIGF 中序: HGIF 3)后序:HIG 中序: HGI画出右子树
a14PW8.png

所以先序遍历为:ABCDEFGHI

2.0设在一棵度数为3的树中,度数为3的结点数有2个,度数为2的结点数有1个,度数为1的结点数有2个,那么叶结点数有( )个。

解: 度以3的树,只存在四种度数的节点(0,1,2,3)度

总度数和=节点个数-1(通用公式)

则依题意共有:32+21+1*2=10(度),则共有11个节点,再减去(1,2,3)度的节点数:11-2-1-2=6个度为0的节点

第5章 第五单元第5章树和二叉树

1.0 假设用于通信的电文仅由abcdef(6种字母)组成,字母abcdef在电文中出现的频率分别为0.45,0.13,0.12,0.16,0.09,0.05。试问在哈夫曼编码后,其带权路径长度WPL=?

解:

字母abcdef
频率0.450.130.120.160.090.05
4513121695

把频率乘100
a14kQg.png
a14CJf.png

WPL=(451+253+163+144)=244

244/100=2.44

2.0设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有(
)个。

  1. 设终端结点数为f,总结点数 f + n。每个结点有两个指针,总指针数 2(f + n)

  2. 二叉树B除去根结点,都是某个结点的孩子, 也就是其余每个结点都有指针指向,
    占用指针数为 f + n - 1;

  3. 剩余空指针数为 2(f + n)- (f + n - 1)= f + n + 1 个

  4. f 个终端结点没有孩子, 所以空的左指针域数为f 个;

  5. 二叉树B 中右指针域为空的结点有 ( f + n + 1 ) - f = n + 1;

第6章 第六单元第6章 图

1.0已知图的邻接表如图

a14AyQ.png

所示,则从顶点v0出发按广度优先遍历的结果是( )。

解答:图的广度优先遍历就类似于树的层序遍历。

0123
0

接着访问V1

0123
01

访问V2

0123
012

访问V3

0123
0123

2.0在背包问题中,假设有5个不可分解的物品,其各物品之(价值,重量)分别为(20,10)、(30,20)、(66,30)、(40,40)、(60,50),背包限重90,若以重量之贪婪算法来解,则所获得之最大利益为
( )。

解:

重量W1020304050
价值V2030664060

贪婪策略的选择问题。对于本题,常见的贪婪策略有三种.

1.根据物品价值选择,每次都选价值最高的物品

2.根据物品重量选择,每次都选择重量最轻的物品

3.定义一个价值密度的概念,每次选择都选择价值密度最高的物品.

最大利益=20+30+66=116

第7章 第七单元第6章 图的应用

a14uF0.png

所示的AOE-网,此工程最早完成时间为( 31 )。

2.0所示的AOE-网,此关键路径为( v0→v2→v3→v4→v7→v9 )。

事件的最早发生时间和最迟发生时间

事件(定点)最早完成时间Ve(i)最晚发生时间Vl(i)
v000
v1510
v277
v31313
v41717
v51819
v62325
v72525
v82627
v93131

计算各个活动ai的最早开始时间e(i) ;各个活动ai的最晚开始时间l(i) ;

活动aie(i)l(i)l(i)- e(i)
a105
a2000
a3510
a4770
a5714
a613130
a71314
a81321
a91719
a1017170
a111819
a122325
a132326
a1425250
a152627

第8章 第八单元第7章 查找

1.0设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的元素加到表中,用二次探测法解决冲突,则放入的位置是( )。(5.0分)

二次再散列法是用来解决哈希冲突的,二次再散列法包括"开放地址法"和"开链法"。开放地址法又包括:线性探测法和二次探测法, 二次探测法:与线性探测法类似,只不过每次寻找的是当前寻找位置的前后第n²个位置。

拿这个题来说:通过哈希函数H(key)=key%14构造哈希表:

012345678910
15386184

H(49)=49%11=5

设寻找的位置下标为:loc

第一次寻找:loc = 5+1²=6; 下标为6的位置已经有元素,所以继续寻找;

第二次寻找:loc=5-1²=4;下标为4的位置已经有元素,所以继续寻找;

第三次寻找:loc=5+2²=9,下标为9的位置没有元素,所以给该元素放到这个位置。寻找结束。

2.0 设哈希函数H(K)= K mod 11,哈希地址空间为0~10,对关键字序列(33,13,47,22,38,23,6,57),按线性探测法解决冲突的方法构造哈希表,查找成功时平均查找长度为(17/8 )。

解:(33,13,47,22,38,23,6,57)

01234567
332213472338657
12114116

计算H(K)= K mod 11

H(33)=0

H(13)=2

H(47)=3

H(22)=0冲突;H(22+1)=1;

H(38)=5

H(23)=1冲突;H(23+1)=2冲突;H(23+2)=3冲突;H(23+3)=4;

H(6)=6

H(57)=2冲突;H(57+1)=3冲突; H(57+2)=4冲突; H(57+3)=5冲突; H(57+4)=6冲突; H(57+5)=7冲突;

,查找成功时平均查找长度为(1*5+2+4+6 )/8=17/8

第9章 第九单元第8章 排序

1.0设待排序的关键字(a1~ a10)序列为{12,2,16,30,28,10,16*,20,6,18},a0为”枢轴”暂存位置,则利用快速排序的方法,以第一个记录a1基准(枢轴)得到的一次划分结果(a1~ a10)为( )。(5.0分)

6 2 10 12 28 30 16* 20 16 18

解:初始序列:

a14ELj.png

以a1为基准,进行划分
a14Zes.png

2.0 设待排序的关键字(a1~ a10)序列为{12,2,16,30,28,10,16*,20,6,18},a0为”交換”暂存位置,解:

a14moq.png

等到:
a14ewn.png

第10章 第十单元第第8章 排序

1.0 T(n)= 8T(n/2) +O(n2),根据主(Master)定理,T(n)=( )。

a14KYV.png

a=8,b=2,k=2

23<22

T(n)=O(n3)

2.0若一组记录的排序码为(30,60,8,40,70,12,10),则利用自底向上构造堆排序的方法,其建立的初始堆为( )。

第11章 第十一单元第8章 排序

1.0假设有一个含10,000个记录的磁盘文件,而当前所用的计算机一次只能对1,000个记录进行内部排序,设采用2-路归并,每次读或写“数据块”大小为200,则总访问外存的次数为(
)。

解:进行2-路归并(即两两归并),则

第一趟由10个归并段得到5个归并段;

第二趟由 5 个归并段得到3个归并段;

第三趟由 3 个归并段得到2个归并段;

最后一趟归并得到整个记录的有序序列。

分析上述外排过程中访问外存(对外存进行读/写)的次数:

假设“数据块”的大小为200,即每一次访问外存可以读/写200个记录。

则对于10,000个记录,处理一遍需访问外存100次(读和写各50次)。

由此,对上述例子而言,

1. 求得10个初始归并段需访问外存100次;

2. 每进行一趟归并需访问外存100次;

3. 总计访问外存 100 + 4*100 = 500次。

2.0设待排序的关键字(a1~
a10)序列为{12,2,16,30,28,10,16*,20,6,18},a0为”交換”暂存位置,则利用二路归并排序的方法,以第二回合(pass)后得到的划分结果(a1~
a10)为( )。

2 12 16 30 10 16* 20 28 6 18

解:

初始关键字:12,2,16,30,28,10,16*,20,6,18

第一回合:(2 12)(16 30)(10 28)(16* 20)(6 18)

第二回合(2 12 16 30)(10 16* 20 28)(6 18)

  • 14
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
综合试题及答案,帮助大家更好的复习.25、用一组地址连续的存储单元存放的元素一定构成线性表。( ) A ) 平均情况下,快速排序法最快,堆积排序法最节省空间 若线性表采用顺序存储结构,每个数据元素占用4个存储单元,第12个数据元素的存储地址为144,则第1个数据元素的存储地址101。Loc(ai)=locl+(i—1)( ) 若长度为n的线性表采用顺序存储结构,删除表的第i个元素之前需要移动表中n-i+1个元素。( )【这是插入的,删除的n-i】 确定串T在串S中首次出现的位置的操作称为串的模式匹配。( 深度为h的非空二叉树的第i层最多有2i-1 个结点。 散列表的查找效率主要取决于所选择的散列函数与处理冲突的方法。 稀疏矩阵压缩存储后,必会失效掉随机存取功能 若一个有向图的邻接矩阵中,对角线以下元素均为0,则该图的拓扑有序序列必定存在。( ) 二叉树可以用0≤度≤2的有序树来表示。 非空双向循环链表中由q所指的结点后面插入一个由p指的结点的动作依次为:p->prior=q, p->next=q->next,q->next=p,q->prior->next←p。( ) 删除非空链式存储结构的堆栈(设栈顶指针为top)的一个元素的过程是依次执行:p=top,top= p->next,free (p)。( ) 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。( ) 在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不与表的个数有关,而与每一块中的元素个数有关 无向图的邻接矩阵是对称的有向图的邻接矩阵是不对称的。( _ D _ C B D D C C A B ( C A B D D C B. C C D 如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是 D D D C A D A D D B A D A B D B C B ( D A B D C 6___ ( C D D __ C A B D 针q所指 C A A D A D B  D A② D A、 )的有限集合 C _B A  C A  C A D ( D C A D B ( B D ( D _ A A ) ( C A ( B ( B D 只有在初始数据为逆序时,冒泡排序所执行的比较次数最多。(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以码平川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值