哈希(哈希法)表
- 哈希法又名散列法,是一种特殊的查找方法
(哈希法希望不通过任何比较,一次存取就能得到元素)
(哈希就是可以通过分门别类的存储数据,然后快速的将某个数据从大量数据中找出来)
哈希表的设计步骤
- 确定表的空间范围,确定哈希值域
- 构造一个合适的哈希函数(该函数需要保证表中所有元素经过这个函数计算之后,函数的返回值的范围在值域之内
- 选择处理冲突(冲突是指,某个数据具有一样的多个存在)的办法
编码设计:自身函数(自己即使变量又是值)or 数字分析法(求余法、叠加法)
(完全可以理解为,为了再图书馆查找一本图书,而给一本书编号,查号的过程)
2.哈希表的实现代码
#include<stdio.h>
#include<memory.h>
struct MyNode//链式结构(用来处理冲突
{
int data;
MyNode *pNext;
};
struct HashTable
{
MyNode *val[10];//定义一个指针数组,这个数组明面每一个指针理解为链表的头指针
};
HashTable* createHashTable()//创建一个哈希表
{
HashTable *pHash = new HashTable;
memset(pHash, 0, sizeof(HashTable));//将堆区40个字节,按每个字节0值赋值
return pHash;
}
//哈希表插入函数
bool insertHashTable(HashTable *pHash,int data)
{
if (pHash == nullptr<