亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++語言實現hash表詳解及實例代碼

2020-05-23 13:54:05
字體:
來源:轉載
供稿:網友

C++語言實現hash表詳解

概要:

 hash表,有時候也被稱為散列表。個人認為,hash表是介于鏈表和二叉樹之間的一種中間結構。鏈表使用十分方便,但是數據查找十分麻煩;二叉樹中的數據嚴格有序,但是這是以多一個指針作為代價的結果。hash表既滿足了數據的查找方便,同時不占用太多的內容空間,使用也十分方便。

    打個比方來說,所有的數據就好像許許多多的書本。如果這些書本是一本一本堆起來的,就好像鏈表或者線性表一樣,整個數據會顯得非常的無序和凌亂,在你找到自己需要的書之前,你要經歷許多的查詢過程;而如果你對所有的書本進行編號,并且把這些書本按次序進行排列的話,那么如果你要尋找的書本編號是n,那么經過二分查找,你很快就會找到自己需要的書本;但是如果你每一個種類的書本都不是很多,那么你就可以對這些書本進行歸類,哪些是文學類,哪些是藝術類,哪些是工科的,哪些是理科的,你只要對這些書本進行簡單的歸類,那么尋找一本書也會變得非常簡單,比如說如果你要找的書是計算機方面的書,那么你就會到工科一類當中去尋找,這樣查找起來也會顯得麻煩。

    不知道這樣舉例你清楚了沒有,上面提到的歸類方法其實就是hash表的本質。下面我們可以寫一個簡單的hash操作代碼。

    a)定義hash表和基本數據節點

typedef struct _NODE {   int data;   struct _NODE* next; }NODE;  typedef struct _HASH_TABLE {   NODE* value[10]; }HASH_TABLE; 

    b)創建hash表

HASH_TABLE* create_hash_table() {   HASH_TABLE* pHashTbl = (HASH_TABLE*)malloc(sizeof(HASH_TABLE));   memset(pHashTbl, 0, sizeof(HASH_TABLE));   return pHashTbl; } 

    c)在hash表當中尋找數據

NODE* find_data_in_hash(HASH_TABLE* pHashTbl, int data) {   NODE* pNode;   if(NULL == pHashTbl)     return NULL;    if(NULL == (pNode = pHashTbl->value[data % 10]))     return NULL;    while(pNode){     if(data == pNode->data)       return pNode;     pNode = pNode->next;   }   return NULL; } 

    d)在hash表當中插入數據

STATUS insert_data_into_hash(HASH_TABLE* pHashTbl, int data) {   NODE* pNode;   if(NULL == pHashTbl)     return FALSE;    if(NULL == pHashTbl->value[data % 10]){     pNode = (NODE*)malloc(sizeof(NODE));     memset(pNode, 0, sizeof(NODE));     pNode->data = data;     pHashTbl->value[data % 10] = pNode;     return TRUE;   }    if(NULL != find_data_in_hash(pHashTbl, data))     return FALSE;    pNode = pHashTbl->value[data % 10];   while(NULL != pNode->next)     pNode = pNode->next;    pNode->next = (NODE*)malloc(sizeof(NODE));   memset(pNode->next, 0, sizeof(NODE));   pNode->next->data = data;   return TRUE; } 

    e)從hash表中刪除數據

STATUS delete_data_from_hash(HASH_TABLE* pHashTbl, int data) {   NODE* pHead;   NODE* pNode;   if(NULL == pHashTbl || NULL == pHashTbl->value[data % 10])     return FALSE;    if(NULL == (pNode = find_data_in_hash(pHashTbl, data)))     return FALSE;    if(pNode == pHashTbl->value[data % 10]){     pHashTbl->value[data % 10] = pNode->next;     goto final;   }    pHead = pHashTbl->value[data % 10];   while(pNode != pHead ->next)     pHead = pHead->next;   pHead->next = pNode->next;  final:   free(pNode);   return TRUE; } 

總結:

    1、hash表不復雜,我們在開發中也經常使用,建議朋友們好好掌握;

    2、hash表可以和二叉樹形成復合結構,至于為什么,建議朋友們好好思考一下?

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩亚洲欧美中文高清在线| 欧美大片免费看| 亚洲精品久久久久| 午夜精品一区二区三区在线播放| 日韩av网站电影| 亚洲成人av片在线观看| 国产综合视频在线观看| 欧美日韩国产限制| 国产精品狠色婷| 国产亚洲精品美女久久久久| 欧美成aaa人片免费看| 成人黄色网免费| 国产一区二区日韩| 91丝袜美腿美女视频网站| 国产亚洲激情视频在线| 亚洲精品国产suv| 日本精品视频在线| 国产精品扒开腿做爽爽爽男男| 日韩欧美精品网站| 久久久久久国产精品三级玉女聊斋| 亚洲第一精品电影| 亚洲男人第一网站| 日韩精品中文字幕在线播放| 亚洲精品视频在线播放| 狠狠色香婷婷久久亚洲精品| 亚洲精品成人久久久| 成人a级免费视频| 国产专区欧美专区| 亚洲国产日韩欧美综合久久| 成人性生交大片免费观看嘿嘿视频| 久久6精品影院| 日韩精品中文字幕有码专区| 日韩成人中文字幕| 在线播放日韩精品| 色与欲影视天天看综合网| 91精品久久久久久久| 日韩高清欧美高清| 黄色精品一区二区| 中文字幕在线视频日韩| 久久国产精品首页| 久久免费国产精品1| 97免费中文视频在线观看| 91成人福利在线| 精品无码久久久久久国产| 亚洲伊人成综合成人网| 国产亚洲精品久久久久动| 国产精品一区专区欧美日韩| 精品国产一区二区三区久久| 国产一区私人高清影院| 国产亚洲精品久久久久久777| 亚洲欧美日韩视频一区| 亚洲高清一二三区| 中国人与牲禽动交精品| 最近中文字幕mv在线一区二区三区四区| 国内精久久久久久久久久人| 久久男人资源视频| 欧美激情一区二区三级高清视频| 日韩免费电影在线观看| 这里只有精品久久| 欧美日韩不卡合集视频| 亚洲一区999| 亚洲精品免费在线视频| 68精品国产免费久久久久久婷婷| 国产成人一区三区| 日本一区二三区好的精华液| 亚洲毛片在线免费观看| 91中文精品字幕在线视频| 国产成人精品日本亚洲| 久久亚洲国产成人| 超薄丝袜一区二区| 国内精品久久久久久久| 91精品久久久久久综合乱菊| 精品少妇一区二区30p| 青草青草久热精品视频在线网站| 国产免费一区二区三区香蕉精| 国产欧美精品一区二区三区介绍| 91精品国产色综合| 欧美日韩中文在线观看| 国产精品成人免费视频| 精品福利一区二区| 精品美女久久久久久免费| 久久精品国产91精品亚洲| 日韩成人在线网站| 亚洲在线免费观看| 精品精品国产国产自在线| 国产精品一区久久| 亚洲午夜小视频| 懂色aⅴ精品一区二区三区蜜月| 91九色单男在线观看| 久久在线观看视频| 国产专区欧美专区| 日韩精品中文字幕久久臀| 久久在精品线影院精品国产| 精品magnet| 欧美激情视频在线| 久久国产天堂福利天堂| 亚洲男子天堂网| 欧美激情喷水视频| 国产精品日韩专区| 黑人狂躁日本妞一区二区三区| 4k岛国日韩精品**专区| 欧美激情亚洲综合一区| 中日韩美女免费视频网站在线观看| 日韩免费在线观看视频| 久久精品欧美视频| 按摩亚洲人久久| 久久综合国产精品台湾中文娱乐网| 在线精品国产成人综合| 91麻豆国产语对白在线观看| 中文.日本.精品| 欧美国产日产韩国视频| 亚洲国产精品成人va在线观看| 亚洲视频一区二区三区| 欧美激情视频网站| 一本一本久久a久久精品牛牛影视| 亚洲无线码在线一区观看| 久久国产精品久久国产精品| 亚洲欧美自拍一区| 欧美高清一级大片| 亚洲第一级黄色片| 国产精品久久久久久久久免费| 亚洲精品小视频| 亚洲精品一区二区久| 亚洲精品国产免费| 欧美尤物巨大精品爽| 色哟哟入口国产精品| 欧美日韩性视频在线| 日韩高清av一区二区三区| 亚洲香蕉av在线一区二区三区| 国产精品久久久久久网站| 蜜臀久久99精品久久久久久宅男| 欧美日韩亚洲一区二区| 欧美日韩成人免费| 亚洲伊人久久综合| 伊人亚洲福利一区二区三区| 91社影院在线观看| xxav国产精品美女主播| 97成人精品区在线播放| 国产99久久精品一区二区| 青青精品视频播放| 日韩精品久久久久| 久久伊人精品一区二区三区| 色777狠狠综合秋免鲁丝| 91在线网站视频| 久久久久久久久久国产精品| 亚洲精品一区二区三区婷婷月| 国产精品18久久久久久首页狼| 97成人精品区在线播放| 欧美黄色片免费观看| 久久久亚洲福利精品午夜| 日韩精品在线观看一区二区| 91免费人成网站在线观看18| 亚洲综合最新在线| 精品中文字幕在线| 在线观看成人黄色| 97超碰色婷婷| 亚洲精品福利视频| 青青久久av北条麻妃海外网| 日韩黄色高清视频| 欧美午夜女人视频在线| 中文字幕日韩视频| 国产午夜一区二区| 日韩高清电影好看的电视剧电影| 国产精品日韩在线一区|