hash函式高階一

2021-06-26 17:44:31 字數 1560 閱讀 4402

通過乙個例子來熟悉hash函式的功能作用以及如何使用。

(1)有100萬個ip位址,從中查詢是否存在待查的ip位址

(2)使用hash對映來實現

(1)hash表面上看起來只是將輸入物件雜湊到hash表中,其實在使用使用中過程有:

(2)使用c語言的隨機函式生成ip位址,模擬海量資料處理

#define maxipnum		1000000

#define hashtablelen 10000

#define ipstrlen 16

#include #include #include "hash_ip.h"

void main()

}

(1)節點結構

struct hashnode

;

(2)

hash陣列表

struct hashtable

hashtable[hashtablelen];

(3)初始化hash表(使用鍊錶來解決衝突):

void inittable()

}

(4)

對映和雜湊:

void beginhash()

else

tmpnode->next = node;

} hashtable[tmpindex].value++;

index++;

}}

(5)

hash函式:可以自行設計優化,使得更均勻,衝突更少

int gethashcode(const char *str)

return (hashcode & 0x7fffffff);

}

(6)

查詢

void findstr(const char *str)

else if(!strcmp(tmpnode->str, str))

tmpnode = tmpnode->next; }

if(0 == mark)

}

@cl /nologo haship.c

@cl /nologo randip.c

@del haship.obj randip.obj

@call randip.exe > randip.txt

@call haship.exe < randip.txt > result.txt

@del haship.exe randip.exe

@pause

內建函式高階 hash

class foo pass obj1 foo obj2 foo print hash obj1 記憶體位址 136382060082 print hash obj1 記憶體位址 136382060082 print hash obj1 記憶體位址 136382060082 print hash o...

高階元件 高階函式 一

antd裡面的form表單方面,遇到乙個高階函式,以及高階元件,於是看了一下這方面內容,前輩們的文章寫得也非常詳細,這裡就稍微kobe一下 高階函式與高階元件 高階函式 高階函式,是一種特別的函式,接受的引數為函式,返回值也是函式 成立條件,二者兼一即可 1 一類特別的函式 a 接受函式型別的引數 ...

Hash函式和Hash衝突

2.rehash 3.鍊錶法 4.建立公共溢位區 一 簡介 將任意長度的數值以某個對映規則對映為固定長度的數值,這個過程稱為hash,而這個對映規則被稱為hash函式,而對這個key value進行儲存的資料結構被稱為hash表。由於通過key的hash對映直接得到了記憶體位址,所以hash查詢的時...