雜湊是一種用於以常數平均時間執行插入、刪除和查詢的技術。
對於分離鏈結法,裝填因子應接近於1。
main函式還不知道怎麼列印。。。 快期中考試了***。
// hashtable.cpp : 定義控制台應用程式的入口點。
//解決衝突的第一種方法叫做分離鏈結法,其做法是將雜湊到
//同一值得所有元素保留到乙個表中。
#include "stdafx.h"
#include #include #include #define mintablesize 5
//#define strlength 4
typedef char* elementtype;
typedef unsigned int index;
struct listnode;
typedef struct listnode* position;
struct hashtbl;
typedef struct hashtbl* hashtable;
void error(char* str)
struct listnode
;typedef position list;
struct hashtbl
;hashtable inittable(int tablesize);
index hash(const char* key, int tablesize);
position find(elementtype key, hashtable h);
bool insert(elementtype key, hashtable h);
bool delete(elementtype key,hashtable h);
position findprevious(elementtype key, list l);
static int nextprime(int tablesize);
static bool isprime(int num);
static int fmod(int a, int b, int c);
index hash(const char* key, int tablesize)
return hashval%tablesize;
}hashtable inittable(int tablesize)
//雜湊表結構分配空間
h = (hashtable)malloc(sizeof(struct hashtbl));
if (h == null)
error("out of memory");
h->tablesize = nextprime(tablesize);
//初始化list指標的陣列
h->thelists = (list*)malloc(sizeof(list)*h->tablesize);
if (h->thelists == null)
error("out of memory");
for (i = 0; i < h->tablesize; i++)
return h;
}position find(elementtype key, hashtable h)
return p;
}bool insert(elementtype key, hashtable h)
return true;
} return false;
}bool delete(elementtype key, hashtable h)
position findprevious(elementtype key, list l)
static int fmod(int a, int b, int c)//快速模取冪
static bool isprime(int num)//公尺勒-拉賓演算法
return true;
}static int nextprime(int tablesize)
return tablesize;
}
雜湊 分離鏈結法
通過某種特定的函式 演算法 稱為雜湊函式 演算法 將要檢索的項與用來檢索的索引 稱為雜湊,或者雜湊值 關聯起來,生成一種便於搜尋的資料結構 稱為雜湊表 也譯為雜湊。我們需要將輸入的字串進行轉換,將其轉換成數字,在插入儲存的數,當然,也可能會存在不同字串對應相同的數字,這時,為了保證不衝突,我們將字串...
雜湊之分離鏈結法
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...
鏈結法雜湊表python實現
t 0 m 1 的槽h k 內,h k 為雜湊值,但是存在乙個問題,不同的關鍵字可能有相同的雜湊值,存放在雜湊表內會發生衝突,因此,可以通過鏈結法,通過在每個槽內存放乙個指向雙向鍊錶或單向鍊錶的指標,把具有相同雜湊值的節點存放在一條鍊錶內從而解決衝突。class node object def in...