日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串hash函数

發布時間:2025/3/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串hash函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自 http://www.cppblog.com/shyli/archive/2007/04/07/21455.html 字符串hash函數 字符串hash函數,解決沖突用開放定址法,每次對哈希值加1
在下列程序中,不是按常規方法用哈希表來記錄關鍵字,
而是用整型數組Htable記錄關鍵字在字符串ch中的位置。
在插入時不用把關鍵字復制到哈希表中,只是記錄一個索引,從而提高了效率。
當查詢時,只要把Htable的值映射到字符串ch中就可以了。
注意ch的下標要從1開始,因為Htable中的零值認為是空,處理起來比較方便。 #include<iostream>
#include
<string>
using?
Namespace?stdnamespace?std;
const?int?MAXN?=?9973;?//哈希表長度
const?int?len?=?30;?//字符串的最大長度
int?Htable[MAX];
char?ch[MAX][len];?//存儲關鍵字的字符串
unsigned?
long?Hash(char?*?key)
{
????unsigned?
long?h?=?0;
????
while(*key)
????{
????????h?
=?(h?<<?4)?+?*key++;
????????unsigned?
long?g?=?h?&?0xf0000000L;
????????
if(g)
????????????h?
^=?g?>>?24;
????????h?
&=?~g;
????}
????
return?h?%?MAX;
}
int?search(char?*?key)
{
????unsigned?
long?i?=?Hash(key);
????
while(Htable[i])
????{
????????
if(strcmp(ch[Htable[i]],?key)?==?0)
????????????
return?i;
????????i?
=?(i?+?1)?%?MAX;
????}
????
return?-1;
}
int?insert(char?*?key,?int?j)?//j為關鍵字在ch中的位置,即索引
{
????unsigned?
long?i?=?Hash(key);
????
while(Htable[i])
????????i?
=?(i?+?1)?%?MAX;
????Htable[i]?
=?j;
????
return?i;
}
?

轉載于:https://www.cnblogs.com/marsmars/archive/2008/02/18/2298976.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的字符串hash函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。