資料結構與演算法分析——c語言描述 第五章 分離鏈結雜湊表
特點就是通過關鍵字來確定乙個位置。用c涉及到字串好麻煩。
hashsep.h
typedef char* elementtype;
#ifndef _hashsep_h
struct listnode;
typedef struct listnode* position;
struct hashtbl;
typedef struct hashtbl* hashtable;
hashtable initializetable(int tablesize);
void destroytable(hashtable h);
position find(elementtype key, hashtable h);
void insert(elementtype key, hashtable h);
void delete(elementtype key, hashtable h);
elementtype retrive(position p);
#endif
hashsep.c
#include"hashsep.h"
#include"fatal.h"
#include#include#define mintablesize 10
struct listnode ;
typedef position list;
struct hashtbl ;
static int hash(elementtype key, int tablesize)
static int isprime(int num)
static int nextprime(int num)
hashtable initializetable(int tablesize)
h = malloc(sizeof(struct hashtbl));
if (h == null)
fatalerror("out of space!!!");
h->tablesize = nextprime(tablesize);
h->thelists = malloc(sizeof(list)*h->tablesize);
if (h->thelists == null)
fatalerror("out of space!!!");
for (i = 0; i < h->tablesize; i++)
} return h;
}void destroytable(hashtable h)
} free(h->thelists);
free(h);
}position find(elementtype key, hashtable h)
void insert(elementtype key, hashtable h)
}void delete(elementtype key, hashtable h)
}elementtype retrive(position p)
main.c
#include"hashsep.h"
#includeint main()
剩下7周把這本書刷完。
雜湊表實現 分離鏈結法
雜湊是一種用於以常數平均時間執行插入 刪除和查詢的技術。對於分離鏈結法,裝填因子應接近於1。main函式還不知道怎麼列印。快期中考試了 hashtable.cpp 定義控制台應用程式的入口點。解決衝突的第一種方法叫做分離鏈結法,其做法是將雜湊到 同一值得所有元素保留到乙個表中。include std...
雜湊 分離鏈結法
通過某種特定的函式 演算法 稱為雜湊函式 演算法 將要檢索的項與用來檢索的索引 稱為雜湊,或者雜湊值 關聯起來,生成一種便於搜尋的資料結構 稱為雜湊表 也譯為雜湊。我們需要將輸入的字串進行轉換,將其轉換成數字,在插入儲存的數,當然,也可能會存在不同字串對應相同的數字,這時,為了保證不衝突,我們將字串...
雜湊之分離鏈結法
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...