雜湊 分離鏈結法

2021-08-04 08:41:38 字數 2177 閱讀 1519

通過某種特定的函式/演算法(稱為雜湊函式/演算法)將要檢索的項與用來檢索的索引(稱為雜湊,或者雜湊值)關聯起來,生成一種便於搜尋的資料結構(稱為雜湊表)。也譯為雜湊。

我們需要將輸入的字串進行轉換, 將其轉換成數字, 在插入儲存的數, 當然, 也可能會存在不同字串對應相同的數字, 這時, 為了保證不衝突, 我們將字串對應相同的數字用鍊錶表示, 用鍊錶儲存我們要儲存的東西. 字串是鑰匙, 只能開啟對應的箱子, 而箱子裡也有其他物品, 我們在搜尋箱子就能找到我們想要的

//hashtbld代表的是鑰匙, 而listnode代表的是物品, 因為有多個鑰匙, 所以hashtbl我們用陣列鍊錶表示

struct listnode;

struct hashtbl;

typedef

struct listnode *position;

typedef

struct hashtbl *hashtabl;

const

int n = 10;

struct listnode

;struct hashtbl

;

字串轉換

unsigned int hash(char *key, int size)

初始化鑰匙跟箱子, 跟鍊錶初始化一樣的, 差別只是在於對hashtbl的初始化是陣列

void creat(int size, hashtabl &h)

}

對於初入與刪除, 就像鍊錶的插入跟刪除一樣, 唯一不同的是, 插入(放物品)我們需要計算他的位置, 需要用hash計算來找到位置(找到他的鑰匙, 才能確定放的對應的寶箱), 找到用鍊錶插入的方式, 將他插入鍊錶即可, 刪除也一樣

void inset(hashtabl h, char *key)

}

//刪除

void

dele(hashtabl

h, char *key)

}

源**

#include 

#include

struct listnode;

struct hashtbl;

typedef

struct listnode *position;

typedef

struct hashtbl *hashtabl;

const

int n = 10;

struct listnode

;struct hashtbl

;//初始化鑰匙跟箱子

void creat(int size, hashtabl &h)

}//字串轉換

unsigned

int hash(char *key, int size)

position find(hashtabl h, char *key)

//對於初入與刪除, 就像鍊錶的插入跟刪除一樣, 唯一不同的是, 插入(放物品)我們需要計算他的位置,

//需要用hash計算來找到位置(找到他的鑰匙, 才能確定放的對應的寶箱), 找到用鍊錶插入的方式,

//將他插入鍊錶即可, 刪除也一樣

void inset(hashtabl h, char *key)

}//刪除

void dele(hashtabl h, char *key)

}int main()

scanf("%s", key);

dele(h, key);

scanf("%s", key);

position t = find(h, key);

printf("%s", t->ch);

system("pause");

return

0;}

雜湊之分離鏈結法

1 include 2 include 3 include 4 include 5 using std vector 6using std list 7using std string 8 using std find 910 int hash const string key 1119 int h...

雜湊表實現 分離鏈結法

雜湊是一種用於以常數平均時間執行插入 刪除和查詢的技術。對於分離鏈結法,裝填因子應接近於1。main函式還不知道怎麼列印。快期中考試了 hashtable.cpp 定義控制台應用程式的入口點。解決衝突的第一種方法叫做分離鏈結法,其做法是將雜湊到 同一值得所有元素保留到乙個表中。include std...

HashTable C 實現之分離鏈結法

hashtable是以常數時間進行進行插入,刪除和查詢的資料結構。其查詢原理是 通過雜湊函式hash 進行雜湊得到value,value為雜湊表的下表。怎麼能得到均衡的value呢?hash 雜湊一般是通過字串對映到鍵值 index hashtable hash one const elemtype...