成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++語言如何實(shí)現(xiàn)hash表-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C++語言如何實(shí)現(xiàn)hash表”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++語言如何實(shí)現(xiàn)hash表”這篇文章吧。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),漢臺(tái)企業(yè)網(wǎng)站建設(shè),漢臺(tái)品牌網(wǎng)站建設(shè),網(wǎng)站定制,漢臺(tái)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,漢臺(tái)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

概要:

hash表,有時(shí)候也被稱為散列表。個(gè)人認(rèn)為,hash表是介于鏈表和二叉樹之間的一種中間結(jié)構(gòu)。鏈表使用十分方便,但是數(shù)據(jù)查找十分麻煩;二叉樹中的數(shù)據(jù)嚴(yán)格有序,但是這是以多一個(gè)指針作為代價(jià)的結(jié)果。hash表既滿足了數(shù)據(jù)的查找方便,同時(shí)不占用太多的內(nèi)容空間,使用也十分方便。

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

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

   a)定義hash表和基本數(shù)據(jù)節(jié)點(diǎn)

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

   b)創(chuàng)建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表當(dāng)中尋找數(shù)據(jù)

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表當(dāng)中插入數(shù)據(jù)

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表中刪除數(shù)據(jù)

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; 
}

以上是“C++語言如何實(shí)現(xiàn)hash表”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁名稱:C++語言如何實(shí)現(xiàn)hash表-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article32/dcgisc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃Google、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、搜索引擎優(yōu)化、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
攀枝花市| 朝阳市| 滦南县| 卫辉市| 浦江县| 阜新| 泽州县| 齐河县| 泸溪县| 毕节市| 灵台县| 宜君县| 抚州市| 枣强县| 西平县| 鄂尔多斯市| 建平县| 龙里县| 巴林左旗| 高雄市| 博罗县| 固阳县| 兴文县| 大厂| 建始县| 晴隆县| 岚皋县| 贵溪市| 黎川县| 安乡县| 眉山市| 祁东县| 仪陇县| 衡东县| 获嘉县| 金寨县| 定襄县| 屏东市| 洪江市| 库伦旗| 晋宁县|