雜湊表的實現

2022-06-24 06:09:18 字數 1471 閱讀 4292

1.雜湊表的宣告檔案

//

靜態雜湊表

#pragma once

#define max_size 10typedef

intdatetype;

typedef

enum

state;

//雜湊表中的每乙個節點

typedef struct

htelem

hetlem;

//乙個雜湊表

typedef struct

hashtable

ht;

2.雜湊表的定義函式檔案

#include#include

#include

#include

"hashs.c";

int hashfunc(datetype data) //

獲得雜湊表的位址

int detectiveline(int hashadder) //

雜湊表的線性探測

return

hashadder;}//

初始化雜湊表

void hashtableinit(ht* ht, int capacity, int

islinedetective)

ht->_size = 0

; ht->_total = 0

; ht->_capacity =capacity;

ht->_islinedetective =islinedetective;}//

雜湊表的插入

void hashtableinsert(ht*ht, datetype data)

if (ht->_islinedetective)

hashadder =detectiveline(hashadder);

}ht->_array[hashadder]._data =data;

ht->_array[hashadder]._state =exist;

ht->_size++;

ht->_total++;}//

雜湊表的查詢(返回位址)

int hashtablefind(ht*ht,datetype data)

return -1

; }}//

雜湊表的刪除

void hashtabledelete(ht*ht, datetype data)

}int hashtablesize(ht*ht)

int hashtableempty(ht*ht)

void printhashbucket(ht*ht)

}}

3.雜湊表的主函式

#include"

hashs.c";

int main(void

)

雜湊表(雜湊表)的實現

雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...

雜湊表 雜湊表 的實現原理

雜湊表可以表述為,是一種可以根據關鍵字快速查詢資料的資料結構。通常情況下,不論雜湊表中資料有多少,增加,刪除,改寫資料的複雜度平均都是o 1 效率非常高。如果說每乙個資料它都對應著乙個固定的位置,那我們查詢特定乙個資料時,就可以直接檢視這個資料對應的位置是否存在資料。乙個形象的例子就是學生在教室中的...

雜湊表(雜湊表) C 實現

雜湊函式就是 關鍵字key 到 值value 的對映 value f key value反映的是關鍵字key的儲存位址。直接定址法 f key a key b 例如存放不同出生年份的人口數量,出生年份是關鍵字,那麼可以用直接定址法。直接定址法的優點是簡單均勻,也不會產生衝突 缺點是該方法適合表比較小...