//enmu列舉在.c格式的**中可能不相容,建議用.cpp去執行
#include
#include
typedef
int keytype;
typedef
int valuetype;
enum status
;typedef
struct hashnode
hashnode;
typedef
struct hashtable
hashtable;
size_t get_next_prime_num(size_t cur_num); //素數表
size_t hashfunc(hashtable* ht, keytype key); //雜湊函式位置分配
void check_capacity(hashtable* ht); //檢查容量
void hashtableinit(hashtable* ht); //建立雜湊表
void hashtableinsert(hashtable* ht, keytype key, valuetype value); //插入
hashnode* hashtablefind(hashtable* ht, keytype key); //查詢
int hashtableremove(hashtable* ht, keytype key); //刪除
void hashtabledestory(hashtable* ht);//銷毀表
void check_capacity(hashtable* ht)
hashtabledestory(ht);
ht->_tables = newht._tables;
ht->_size = newht._size;
ht->_n = newht._n;}}
}size_t get_next_prime_num(size_t cur_num)//素數表
; for (size_t i = 0; i < _primesize; i++)
}return _primelist[_primesize - 1];
}size_t hashfunc(hashtable* ht, keytype key)
void hashtableinit(hashtable* ht)
}void hashtableinsert(hashtable* ht, keytype key, valuetype value)
}ht->_tables[index]._key = key;
ht->_tables[index]._value = value;
ht->_tables[index]._status = exits;
ht->_size++;
}void hashtabledestory(hashtable* ht)
hashnode* hashtablefind(hashtable* ht, keytype key)
while (ht->_tables[index_next]._status != empty)
if (ht->_tables[index_next]._key == key)
else
}index++;
if (index_next == ht->_n)
}return null;
}int hashtableremove(hashtable* ht, keytype key)
else
}void printhash(hashtable* ht)
}
資料結構 雜湊表(雜湊表)鏈位址法
雜湊錶鏈位址法基本思想是將相同雜湊位址的元素放在同乙個單鏈表中,即稱同義詞鍊錶。例如此時我們設乙個雜湊函式h key key n,則可以定義乙個一維陣列,大小為n,陣列元素對應關鍵字模n所得的數字。如下圖 n為13,各關鍵字模13後插入對應值的表中。typedef struct hashnode h...
資料結構 雜湊表
1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...
資料結構 雜湊表
雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...