北林 数据结构期末考试 应用题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构
应用题
天涯古巷 出品
题型一:表达式求值
按照四则运算加(+)、减(-)、乘(*)、除(/)和幂运算(^)优先关系的惯例,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程:A-B×C/D+E^F
解:BC=G G/D=H A-H=I E^F=J I+J=K
步骤 OPTR栈 OPND栈 输入字符 主要操作
1 # A-B*C/D+E^F# PUSH(OPND,A)
2 # A -B*C/D+E^F# PUSH(OPTR,-)
3 #- A B*C/D+E^F# PUSH(OPND,B)
4 #- A B *C/D+E^F# PUSH(OPTR,*)
5 #-* A B C/D+E^F# PUSH(OPND,C)
6 #-* A B C /D+E^F# Operate(B,*,C)
7 #- A G /D+E^F# PUSH(OPTR,/)
8 #-/ A G D+E^F# PUSH(OPND,D)
9 #-/ A G D +E^F# Operate(G,/,D)
10 #- A H +E^F# Operate(A,-,H)
11 # I +E^F# PUSH(OPTR,+)
12 #+ I E^F# PUSH(OPND,E)
13 #+ I E ^F# PUSH(OPTR,^)
14 #+^ I E F# PUSH(OPND,F)
15 #+^ I E F # Operate(E,^,F)
16 #+ I J # Operate(I,+,J)
17 # K # RETURN
题型二:汉诺塔时间复杂度的分析及证明
汉诺塔问题的递归算法的时间复杂度是什么?请给出答案并且给予证明。
解:时间复杂度T(n)=O(2n
),证明如下
已知:f(1)=1,f(n)=2f(n-1)+1 所以:f(n)+1=2(f(n-1)+1)
f(n)= 2n
-1 (2
n
-1为至少执行移动操作的次数)
T(n)=O(2n
)
故:得证
题型一:数组地址的计算
设有二维数组A(6×8),每个元素占6字节存储,顺序存放,A的起地址为1000,计算:
(1)数组A的体积(即存储量);
(2)数组的最后一个元素A57的起始地址;
(3)按行优先存放时,元素A14的起始地址;
(4)按列优先存放时,元素A47的起始地址。
第五章
题型一:由二叉树的中序遍历和前(后)序遍历,画出该二叉树
1、给定二叉树的两种遍历序列,分别是:
前序遍历序列:A B D F C E G H; 中序遍历序列:B F D A G E H C
试画出二叉树B,并简述由任意二叉树B的前序遍历序列和中序遍历序列求二叉树B的思想方法。
结点序列。
题型二:哈夫曼树的构造(画树、计算WPL、初态和终态表),设计哈夫曼编码
1、假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
① 试为这8个字母设计赫夫曼编码。
② 试设计另一种由二进制表示的等长编码方案。 ③ 对于上述实例,比较两种方案的优缺点。 答案:方案1;哈夫曼编码
先将概率放大100倍,以方便构造哈夫曼树。
w={7,19,2,6,32,3,21,10},按哈夫曼规则:【[(2,3),6], (7,10)】, ……19, 21, 32
(100)
(40) (60)
(17) (11)
7 10 6 (5) 2 3
方案比较: 方案1
WPL=2*(0.19+0.32+0.21)+4*(0.07+0.06+0.10)+5*(0.02+0.03)=1.44+0.92+0.25=2.61 方案2
WPL=3*(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3 结论:哈夫曼编码优于等长二进制编码
字母编号 对应编码
出现频率
1 000 0.07
2 001 0.19
3 010 0.02
4 011 0.06
5 100 0.32
6 101 0.03
7 110 0.21 8
111
0.10
字母编号
对应编码
出现频率 1 1100 0.07 2 00 0.19 3 11110 0.02 4 1110 0.06 5 10 0.32 6 11111
0.03 7 01 0.21 8
1101
0.10
2、已知下列字符A、B、C、D、E、F、G 的权值分别为
3、12、7、
4、2、8,11,试填写出其对应哈夫曼树HT 的存储结构的初态和终态。 答案:
初态:
终态:
weight
parent
lchild rchild
1 3 8 0 0
2 12 12 0 0
3 7 10 0 0
4 4 9 0 0
5 2 8 0 0
6 8 10 0 0
7 11 11 0 0
8 5
9 5 1 9 9 11 4 8 10 15 12 3 6 11 20 13 9 7 12 27 13 2 10 13 47
11
12
weight parent lchild rchild 1 3 0 0 0 2 12 0 0 0 3 7 0 0 0 4 4 0 0 0 5 2 0 0 0 6 8 0 0 0 7 11 0 0 0 8 0 0 0 9 0 0 0 10 0 0 0 11 0 0 0 12 0 0 0 13