数据结构与算法_哈希

哈希(哈希法)表

  • 哈希法又名散列法,是一种特殊的查找方法

(哈希法希望不通过任何比较,一次存取就能得到元素)
(哈希就是可以通过分门别类的存储数据,然后快速的将某个数据从大量数据中找出来)

哈希表的设计步骤

  1. 确定表的空间范围,确定哈希值域
  2. 构造一个合适的哈希函数(该函数需要保证表中所有元素经过这个函数计算之后,函数的返回值的范围在值域之内
  3. 选择处理冲突(冲突是指,某个数据具有一样的多个存在)的办法
    编码设计:自身函数(自己即使变量又是值)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<
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值