0001 template <typename K, typename V> Entry<K,V>* Hashtable<K,V>::get(K k) { 0002 for (_s = hashCode(k) % M; ht[_s]; _s = (_s+1) % M) //线性试探:第一阶段 0003 if (k == ht[_s]->key) 0004 return ht[_r = _s]; //命中,或暂停于第一所空宅或故居[_s] 0005 for (_r = _s; used[_r]; _r = (_r+1) % M) //线性试探:第二阶段(U<M,必能终止) 0006 if (ht[_r] && (k == ht[_r]->key)) 0007 return ht[_r]; //命中 0008 return nullptr; //或失败:终止于第一所空宅[_r] 0009 } //无论查找成功与否,沿着试探链只需对每个桶试探恰好一次