hashtablebucket.h
#pragma once
#include #include #include #include #include //typedef char* htbkeytype;
//typedef char* htbvaluetype;
//typedef char* htbkeytype;
//typedef int htbvaluetype;
typedef int htbkeytype;
typedef int htbvaluetype;
typedef struct hashnode
hashnode;
typedef struct hashtablebucket
htb;
//初始化
void htbinit(htb* htb, size_t len);
//銷毀
void htbdestory(htb* htb);
//插入
int htbinsert(htb* htb, htbkeytype key, htbvaluetype value);
//刪除
int htbremove(htb* htb, htbkeytype key);
//查詢
hashnode* htbfind(htb* htb, htbkeytype key);
//大小
int htbsize(htb* htb);
//判斷是否為空
int htbempty(htb* htb);
void testhashtablebucket();
hashtablebucket.c
#include "hashtablebucket.h"
static size_t getnextprime(size_t value)//質數表,給增容提供最佳選擇容量大小
; for (; i < 28; ++i) }
return _primelist[27];
}//初始化
void htbinit(htb* htb, size_t len)
//銷毀
void htbdestory(htb* htb)
htb->_tables[i] = null;
} //釋放雜湊表
free(htb->_tables);
htb->_tables = null;
htb->_size = 0;
htb->_len = 0;
}int htbhashfunc(htbkeytype key, int len)
//檢查負載因子是否達到1,如果達到1,則需要擴容
void htbcheckcapacity(htb* htb)
htb->_tables[i] = null;
} //釋放舊的雜湊表
htbdestory(htb);
htb->_tables = newhtb._tables;
htb->_size = newhtb._size;
htb->_len = newhtb._len; }}
//建立節點
hashnode* buyhashnode(htbkeytype key, htbvaluetype value)
//插入乙個元素
int htbinsert(htb* htb, htbkeytype key, htbvaluetype value)
newnode = buyhashnode(key, value);
newnode->_next = htb->_tables[index];
htb->_tables[index] = newnode;
htb->_size++;
return 0;
}//刪除乙個元素
int htbremove(htb* htb, htbkeytype key)
prev = cur;
cur = cur->_next;
} return -1;
}//在雜湊表中查詢乙個元素
hashnode* htbfind(htb* htb, htbkeytype key)
cur = cur->_next;
} return null;
}int htbsize(htb* htb)
int htbempty(htb* htb)
//列印雜湊表
void htbprint(htb* htb)
printf("%d\n", count);
} printf("\n");
}void testhashtablebucket()
int main()
雜湊表(拉鍊法)
開雜湊法又叫鏈位址法 開鏈法 開雜湊法 首先對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個 桶中的元素通過乙個單鏈表鏈結起來,各鍊錶的頭結點儲存在雜湊表中。設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大...
雜湊表查詢 拉鍊法
雜湊查詢 雜湊查詢 雜湊的第一步是使用雜湊函式將鍵對映成索引 1 除留取餘法 最常用的 特點是容易造成堆積,產生衝突 2 特徵值 3 字元型別的 在查詢中陣列的特點是定址容易,插入和刪除困難,鍊錶則相反 雜湊表將二者的特點綜合。雜湊表建表 通過某種關係轉換,使關鍵字適度的分散到制定大小的順序結構中,...
雜湊錶開雜湊法(拉鍊法)
開雜湊法又叫鏈位址法 開鏈法 設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大小為12,雜湊函式為hash x x 11 hash 37 4 hash 25 3 hash 14 3 hash 36 3 hash 49 5 hash 68 2 hash 57 ...