雜湊表實現 分離鏈結法

2021-06-18 21:13:20 字數 2090 閱讀 8333

雜湊是一種用於以常數平均時間執行插入、刪除和查詢的技術。

對於分離鏈結法,裝填因子應接近於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...