哈希表

哈希表是一种使用散列函数直接访问数据结构,通过关键码值快速查找记录。本文介绍了哈希冲突的概念,并重点讲解了采用闭散列(线性探测法)处理冲突的方法,包括哈希表的初始化、插入、查找和删除操作。
摘要由CSDN通过智能技术生成

基于线性探测解决哈希冲突的哈希表
哈希表概念

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

哈希冲突

不同的关键字通过同一哈希转换函数计算出相同的哈希地址

处理哈希冲突
常见的两种方法是闭散列和开散列

闭散列:(开放地址法或者也叫线性探测法)
当发生冲突时,如果哈希表未被填满,说明哈希表中必然有空位置,可以把key放到列表中“下一个”空位置中。

这里写图片描述
哈希表定义

  7 #define max_size 1000
  8 
  9 typedef int KeyType; 
 10 typedef int ValType;  
 11 typedef char DataType;
 12 typedef int (*HashFunc)(KeyType key);
 13 //哈希数组元素的状态
 14 typedef enum Stat
 15 {
 16     Empty, //未插入
 17     Valid, //插入
 18     Deleted//删除
 19 }Stat;
 20 
 21 //哈希表数组中的元素类型
 22 typedef struct HashElem
 23 {
 24     KeyType key;  //包含一个键值
 25     ValType value; //包含一个值
 26     Stat stat;   //定义哈希表中的元素状态
 27 }HashElem;
 28 //定义哈希表
 29 typedef struct HashTable
 30 {
 31     HashElem data[max_size];
 32     int size;  //有效元素个数
 33     HashFunc func; //哈希函数
 34 }HashTable;   

哈希表的初始化

 36 //哈希表的初始化
 37 void HashInit(HashTable* ht,HashFunc hash_func)
 38 {
 39     if(ht==NULL)
 40     {
 41         return ;
 42     }
 43     ht->size=0;
 44     ht->func&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值