0001 /****************************************************************************************** 0002 * 沿关键码k对应的查找链,找到与之匹配的桶(供查找和删除词条时调用) 0003 * 试探策略多种多样,可灵活选取;这里仅以线性试探策略为例 0004 ******************************************************************************************/ 0005 template <typename K, typename V> int Hashtable<K, V>::probe4Hit ( const K& k ) { 0006 int r = hashCode ( k ) % M; //从起始桶(按除余法确定)出发 0007 while ( ( ht[r] && ( k != ht[r]->key ) ) || ( !ht[r] && lazilyRemoved ( r ) ) ) 0008 r = ( r + 1 ) % M; //沿查找链线性试探:跳过所有冲突的桶,以及带懒惰删除标记的桶 0009 return r; //调用者根据ht[r]是否为空,即可判断查找是否成功 0010 }