下面我們一起來看乙個c語言實現的雜湊表實現程式了,這個程式沒有過多的說明只是乙個例子,大家有興趣可以進入看看或測試一下。
為了鞏固一下鍊錶知識,自己實現的乙個雜湊表,在gcc 4.4.7下編譯通過;
hash.h
**如下
複製**
* author : maben
* date : 2014-12-23
#ifndef __hash_h__
#define __hash_h__
typedef struct _bucket bucket;
typedef struct _hash hashtable;
void hash_init(hashtable** hash);
unsigned int get_hash_index(char* str);
int hash_insert(hashtable* hash, char* key, char* value);
int hash_find(hashtable* hash, char* key, bucket** bucket);
int hash_remove(hashtable* hash, char* key);
void hash_free(hashtable* hash);
#endif
hash.c
* author : maben
* date : 2014-12-23
#include "stdio.h"
#include "hash.h"
#include "assert.h"
#define hash_size 100
void hash_init(hashtable** hash)
(*hash) = (hashtable*)malloc(sizeof(hashtable));
if ((*hash) == null) else else while(bucket);
free(hash->buckets);
free(hash);
hash = null;
用法:#include "stdio.h"
#include "hash.h"
int main(int argc, char* ar**) ;
char value[10] = ;
sprintf(key, "hello%d", i);
sprintf(value, "world%d", i);
hash_insert(hash, key, value);
for (i = 0; i < 200; i ) ;
sprintf(key, "hello%d", i);
hash_remove(hash, key);
for (i = 0; i < 200; i ) ;
sprintf(key, "hello%d", i);
bucket* bucket;
int result = hash_find(hash, key, &bucket);
if (result) {
printf("%s=>%s\n", bucket->key, bucket->value);
hash_free(hash);
return 0;
c語言雜湊表電子辭典 C語言雜湊表
功能,利用雜湊表製作 查詢系統,根據姓名查詢 建立了雜湊表之後,我想列印出這個表,但是沒輸出結果 include include include include define maxsize 5 define namelength 20 define phonelength 15 typedef s...
雜湊表 C語言實現
這裡不講高深理論,只說直觀感受。雜湊表的目的就是為了根據資料的部分內容 關鍵字 直接計算出存放完整資料的記憶體位址。void list find by key list,key return p 為了解決根據關鍵字快速找到元素的存放位址,雜湊表應運而生。它通過某種演算法 雜湊函式 直接根據關鍵字計算...
c語言實現雜湊表
雜湊表大家都在資料結構中學習過,應該是查詢最快的一種資料結構了,最好的情況下可以達到線性的時間複雜度。鍵key的狀態碼如果為 vt undefined 的話那麼就是這個槽位沒有被占用或者已經被刪除了 值value的狀態碼有vt true和vt false兩種,只要這個槽位已經被占用過了,那麼valu...