三.(1) 二叉排序树 T
T
case
for
while
class
proted
do
private
virtu
const
if
publi
int
templace
(2)删去关键字“for”之后的二叉排序树 T
case
class
do
while
protecte
const
private
virtual
if
public
int
templace
(3)再插入关键字“for”后的二叉排序树 T
do
case
while
class
protected
virtual
const
private
publi
if
for
int
templac
(4)T”的先序序列:do case const while protected private if for int virtural public template
T’的中序序列:case class const do for if int private protected public templat virturale while
T”的后序序列:class const for case int if private template public virtural protected while
4.(1)查找 707 时,首先根据哈希函数计算得出该元素应该在哈希表中的 0 单元,但是在 0
但愿没有找到,因此将向下一个单元探测,结果发现该单元是-1,所以结束查找,这将导致
707 无法找到。
(2)如果改用“-2“作为删除标记,则可以正确找到 707 所在结点。
四.(1)查找成功时 ASL=37/12,查找失败时的 ASL=62/13.
(5)采用除留余数法构造哈希函数,即H(k)=kMOD11,且采用步长为1的线性
探测再哈希表法处理冲突,对应的地址如下:
H(32)=32MOD11=10
H(63)=63MOD11=8
H(94)=94MOD11=6
H(36)=36MOD11=3(冲突)
(仍然冲突)
H(36)=(4+1)MOD11=5
H(70)=70MOD11=4(冲突)
(仍然冲突)
H(70)=(5+1)MOD11=6(仍然冲突)
D11=7(仍然冲突)
H(70)=(7+1)MOD11=8(仍然冲突)
D11=9(仍然冲突)
H(70)=(9+1)MOD11=10(仍然冲突) H(70)=(10+1)M
OD11=0
H(48)=48MOD11=4
H(25)=25MOD11=3
H(36)=(3+1)MOD11=4
H(18)=18MOD11=7
H(70)=(4+1)MOD11=5
H(75)=75MOD11=9
H(70)=(6+1)MO
H(70)=(8+1)MO
哈希表
地址
关键字
0
1
2
3
4
5
6
7
8
9
10
25 48 36 94 18 63 75 32
平均查找长度 ASL=(1*7+3*1+8*1)/9=18/9=2/1
(2)采用除留余数法构造哈希函数,即 H(k)=kMOD11,且采用步长为 3 的线性探测再哈
希法处理冲突,哈希表:
H(32)=32MOD11=10
H(63)=63MOD11=8
H(94)=94MOD11=6
H(36)=36MOD11=3(冲突)
(仍然冲突)
H(36)=(6+3)MOD11=9(仍然冲突)
1=1
H(18)=18MOD11=7
H(70)=(4+3)MOD11=7(仍然冲突)
1=10(仍然冲突)
H(70)=70MOD11=4(冲突)
H(70)=(7+3)MOD1
H(70)=(10+3)MOD11=2
H(75)=75MOD11=9
H(48)=48MOD11=4
H(25)=25MOD11=3
H(36)=(3+3)MOD11=6
H(36)=(6+3)MOD1
哈希表
0
地址
关键字
1
36
2
70
3
25
4
48
5
6
94
7
18
8
63
9
75
10
32
平均查找长度 ASL=(1*7+4*2)/9=15/9=5/3