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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链地址的哈希表实现

發(fā)布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链地址的哈希表实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鏈地址的哈希表實現(xiàn)

1.類型定義

1 typedef struct Node { 2 RcdType r; 3 struct Node *next; 4 } Node; 5 typedef struct { 6 Node **rcd;   7 int size; // 哈希表容量 8 int count;   // 當(dāng)前表中含有的記錄個數(shù) 9 int (*hash)(KeyType key, int); // 函數(shù)指針變量,用于選取的哈希函數(shù) 10 } HashTable; ?

2.初始化

1 Status InitHash(HashTable &H, int size, int (*hash)(KeyType,int)) { 2 //初始化哈希表 3 int i; 4 if(NULL==(H.rcd=(Node**)malloc(sizeof(Node)*size))) return OVERFLOW; 5 for(i = 0;i<size;i++) 6 H.size = size; 7 H.count = 0; 8 H.hash = hash; 9 return OK; 10 } ?

3.查找

1 Node* SearchHash(HashTable &H, int key){ 2 int p = H.hash(key,H.size); 3 Node *np; 4 for(np = H.rcd[p];np!=NULL;np=np->next){ 5 if(np->r.key = key) return np; 6 } 7 return NULL; 8 } 9 ? 10 ? 11 //哈希函數(shù) 12 int hash(int key, int size) { 13 return 3*key%size; 14 } 15 ?

?

?

4.插入

1 Status InsertHash(HashTable &H, RcdType e){ 2 int p; 3 Node *np; 4 if((np=SearchHash(H, e.key))==NULL){ 5 p = H.hash(e.key, H.size); 6 np = (Node*)malloc(sizeof(Node)); 7 if(np==NULL) return OVERFLOW; 8 np->r = e; 9 np->next = H.rcd[p]; 10 H.rcd[p]= np; 11 H.count++; 12 return OK; 13 } 14 return error; 15 }

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/linwx/articles/7655603.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的链地址的哈希表实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。