@zqbinggong
2018-03-11T17:02:33.000000Z
字数 628
阅读 812
直接寻址表
散列表
散列函数
开放寻址
算法导论
探查序列的产生方法
线性探查
二次探查
双散列
检索和插入操作
--
Hash-Insert(T,k)
i = 0
while i <= m
j = h(k,i)
if T[j] == nil
T[j] = k
return j
else
i = i + 1
error "hash table overflow"
Hasj-Search(T,k)
i = 0
do
j = h(k,i)
if T[j] == k
return j
i = i + 1
while T[j] != NIL and i <= m
return NIL
注意,检索的while的第一个条件,它来自于插入操作的if条件,显然如果有一个位置是空的,那么它之后的slot必然都是空的。这一性质也影响了删除操作,因为简单的将slot指向NIL会影响对该slot后面元素的检索操作。因而该散列方法不适用于必须删除关键字的应用。