c語言雜湊表電子辭典 C語言實現的雜湊表實現程式

2021-10-16 13:27:42 字數 1643 閱讀 5226

下面我們一起來看乙個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...