伪代码
/**
* following are for direct-address
**/
1.
direct-address-search(T,k)
return T[k]
2.
direct-address-insert(T,x)
T[x.key]=x
3.
direct-address-delete(T,x)
T[x.key]=NULL
/**
* following are for chain hash table
* and x stands for node containing key-value: x.key
**/
//chained hash to solve problems brought by the same h()
4.
chain-hash-search(T,x)
h=h(x.key) // x.keyfor p=T[h].next ; p!=NULL&&p.key!=x.key ; p=p.next
return p
5.
chain-hash-insert(T,x)
h=h(x.key)
for p=T[h] ; p.next!=NULL && p.next.key<x.key ; p=p.next
p.next=x
6.
chain-hash-delete(T,x)
h=h(x.key)
for p=T[h].next ; p!=NULL && p.key!=x.key ; p=p.next
p=NULL
/**
* following are for open-addressing hash table (without chain , in the condition that delete is not required)
* and k stands for key-value
**/
7. //-1 means k not found
hash-search(T,k)
for i=0 to i=m-1
h=h(k,i)
if T[h]==k
return h
return -1
8.//1 represents successful insertion, 0 the contrary
hash-insert(T,k)
for i=0 to i=m-1
h=h(k,i)
if T[h]==NULL //key(k) is not exists
T[h]=k
return 1
return 0
/**
* following are three probing strategies for open addressing
**/
9.
linear probing:
h(k,i)=(h'(k)+i)mod m , i=0,1,...,m-1 // i's scope
10.
quadratic probing:
h(k,i)=(h'(k)+b*i^2+c*i)mod m //remember to mod m, i's scope is the same as above
11.
double hashing:
h(k,i)=( h1'(k)+i*h2'(k) )mod m
12.
perfect hashing
......