数据结构应用题天涯古巷 出品题型一:表达式求值按照四则运算加(+)、减(-)、乘(*)、除(/)和幂运算(^)优先关系的惯例,画出对下列算术表达式求值时操作数栈和运算符栈的变化过程: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 (2n-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方案比较: 方案1WPL=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 方案2WPL=3*(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3 结论:哈夫曼编码优于等长二进制编码字母编号 对应编码出现频率1 000 0.072 001 0.193 010 0.024 011 0.065 100 0.326 101 0.037 110 0.21 81110.10字母编号对应编码出现频率 1 1100 0.07 2 00 0.19 3 11110 0.02 4 1110 0.06 5 10 0.32 6 111110.03 7 01 0.21 811010.102、已知下列字符A、B、C、D、E、F、G 的权值分别为3、12、7、4、2、8,11,试填写出其对应哈夫曼树HT 的存储结构的初态和终态。
答案:初态:终态:weightparentlchild rchild1 3 8 0 02 12 12 0 03 7 10 0 04 4 9 0 05 2 8 0 06 8 10 0 07 11 11 0 08 59 5 1 9 9 11 4 8 10 15 12 3 6 11 20 13 9 7 12 27 13 2 10 13 471112weight 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题型三:利用二叉树的性质对某些问题进行证明 对于那些所有非叶子结点均含有左右子数的二叉树: (1) 试问:有n 个叶子结点的树中共有多少个结点?(2) 试证明:()1211=∑=−−ni l i ,其中n 为叶子结点的个数,i l 表示第i 个叶子结点所在的层次(设根节点所在层次为1)。
解:(1)总结点数为121n +,其中1n 为非叶子结点数,则叶子结点数为11+=n n ,所以总结点数为12−n 。
(2)用归纳法证明。
i=1,说明二叉树只有一个叶子结点,则整棵树只有一个根结点,11=l ,12)1(1=−−l ,结论成立。
设有n 个叶子结点时也成立,即12 (2)...22)1()1()1()1(21=++++++−−−−−−−n p l l l l ,现假设增加一个叶子结点,这意味着在某叶子结点p 上新生两个叶子结点,而结点p 则成为非叶子结点,可见,总结点数增2,叶子结点数增1。
此时,所有叶子结点是原结点除去p,然后加上两个深度为1+p l 的新叶子结点,由此,)11()11()1()1()1()1()1(222 (2)2...221121−+−−+−+−−−−−−−−−+++++++++−p p n p p l l l l l l l12 (2)...22)1()1()1()1(21=+++++=+−−−−−−−n p l l l l则当i=n+1时,也成立,由此即得到证明。
第六章题型一:给定图的逻辑结构,画出邻接矩阵和邻接表(或反过来考) 1、已知图所示的有向图,请给出: ① 每个顶点的入度和出度; ② 邻接矩阵; ③ 邻接表;④ 逆邻接表。
答案:2、已知如图6.33所示的无向网,请给出: ① 邻接矩阵; ② 邻接表; ③ 最小生成树 答案: ①③⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞6456252363794567555553955434②a →b 4 →c 3b → a 4 →c 5 →d 5 →e 9c → a 3 → b 5 →d 5 → h 5d → b 5 → c 5 →e 7 →f 6 →g 5 →h 4e → b 9 → d 7 →f 3f → d 6 → e 3 →g 2g → d 5 → f 2 → h 6题型二:根据图的逻辑结构或存储结构,写出深度、广度优先搜索遍历结果(根据逻辑结构写是唯一的,根据存储结构写不唯一)已知图的邻接矩阵如图所示。
试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。
答案:题型三:根据图的逻辑结构填写最短路径求解过程表,画出最小生成树(计算权值和),写出拓扑排序结果有向网如图所示,试用迪杰斯特拉算法求出从顶点a 到其他各顶点间的最短路径,完成下表答案:第七章题型一:折半查找过程,画判定树,计算ASL假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:① 画出描述折半查找过程的判定树;② 若查找元素54,需依次与哪些元素比较?③ 若查找元素90,需依次与哪些元素比较?④ 假定每个元素的查找概率相等,求查找成功时的平均查找长度。
答案:①先画出判定树如下(注:mid=⎣(1+12)/2⎦=6):305 633 7 42 874 24 54 72 95②查找元素54,需依次与30, 63, 42, 54 元素比较;③查找元素90,需依次与30, 63,87, 95元素比较;④求ASL之前,需要统计每个元素的查找次数。
判定树的前3层共查找1+2×2+4×3=17次;但最后一层未满,不能用8×4,只能用5×4=20次,所以ASL=1/12(17+20)=37/12≈3.08题型二:二叉排序树的创建,查找,计算ASL已知如下所示长度为12的表:(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec)① 试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。
② 若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。
答案:题型三:已知哈希表长度和哈希函数,利用线性探测法和链地址法解决冲突,构造哈希表,计算ASL1、(线性探测)设哈希表的地址范围为0~17,哈希函数为:H(key)=key%16。
用线性探测法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49),构造哈希表,试回答下列问题:① 画出哈希表的示意图;② 若查找关键字63,需要依次与哪些关键字进行比较?③ 若查找关键字60,需要依次与哪些关键字比较?④ 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。
答案:①画表如下:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 32 17 63 49 24 40 10 30 31 46 47②查找63,首先要与H(63)=63%16=15号单元内容比较,即63与31比较 ,不匹配;然后顺移,与46,47,32,17,63相比,一共比较了6次!③查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。